判定 val 是否为字符串原始类型(含类型收窄)
仅检查 typeof val === 'string',不接受 new String() 包装对象。 后者在现代代码中几乎绝迹,且 typeof 为 'object',会产生类型谎言。
typeof val === 'string'
new String()
typeof
'object'
— 待检查的任意值
true 当且仅当 val 是字符串原始类型,同时将 val 收窄为 string
true
string
if (isString(val)) { val.toUpperCase(); // ✅ val: string}isString(new String('hello')); // false(不收窄包装对象) Copy
if (isString(val)) { val.toUpperCase(); // ✅ val: string}isString(new String('hello')); // false(不收窄包装对象)
https://stackoverflow.com/questions/4059147/check-if-a-variable-is-a-string-in-javascript
判定 val 是否为字符串原始类型(含类型收窄)
仅检查
typeof val === 'string',不接受new String()包装对象。 后者在现代代码中几乎绝迹,且typeof为'object',会产生类型谎言。