gpt4 book ai didi

javascript - 在JavaScript中,typeof返回的常量字符串从何而来?

转载 作者:行者123 更新时间:2023-12-04 01:46:57 25 4
gpt4 key购买 nike

我看到很多地方用 typeof 关键字做字符串比较,它返回的显然是常量字符串,比如 string, object, undefined 等。我希望在某处看到那些被定义为常量的东西,但似乎并非如此(它们列在 MDN here 上)。我不喜欢看到在代码中使用重复的字符串,因为它们看起来很神奇。当前的解决方案是我自己在代码中的其他地方将它们定义为 const 但似乎 JS 无论如何都知道这些所以为什么我不能得到它们? (或者我可以吗?)

魔法字符串:

if(typeof myObject === 'object') {}  

这似乎好一点,因为没有重复的魔术字符串,但我不明白为什么我必须定义常量:

const TYPE_OBJECT = 'object';

if(typeof myObject === TYPE_OBJECT) {}
if(typeof myOtherObject === TYPE_OBJECT) {}

或者,这看起来也很笨拙:

if(typeof myObject === Object.name.toLowerCase()) {}  
if(typeof "hello" === String.name.toLowerCase()) {}

是否有更好的方法或者这些常量是否内置于某处?

最佳答案

这些字符串常量不可用作预定义常量。但是如果你不想自己指定那些字符串文字,你可以做相反的事情,并将 typeof 应用于你提供的一些基本值,并用这些返回的字符串定义常量。例如:

const TYPES = Object.freeze({
OBJECT: typeof {},
UNDEFINED: typeof undefined,
BOOLEAN: typeof true,
NUMBER: typeof 1,
STRING: typeof "",
FUNCTION: typeof eval,
SYMBOL: typeof Symbol()
});

console.log(TYPES);

// Use it:
let myObject = { "test": 123 };
console.log(typeof myObject === TYPES.OBJECT); // true

关于javascript - 在JavaScript中,typeof返回的常量字符串从何而来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44313707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com