We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
尽管JavaScript可以自动做许多类型转换, 但有时仍需要做显式转换, 或者为了使代码变 得清晰易读而做显式转换。
做显式类型转换最简单的方法就是使用Boolean()、Number()、String()或Object()函 数。
Number( "3“ ) // 3 String(false) // "false" 或使用false.toString() Object(3) // Number(3) Boolean([]) // true Boolean('') // false
这边拿Boolean([]) 和Boolean('') 来说好了,有的同学可能会有困惑
来看看ECMA所述
Boolean()用的是ToBoolean方法; 参数为String中,string长度为0,也就是空字符串””时,Boolean显式转换为false,非空字符串为true; 而参数只要是Object类型,都被Boolean显示转换成true,而众所周知,[]数组属于Object类型的一种。
小测一下:Boolean(new Boolean(false))这结果显示为啥?
Boolean(new Boolean(false))
答案是true,因为new Boolean(false)是对象而不是原始值
原始值也有人称为基本类型,但从翻译的角度来看Primitive Values应该译为原始值,而引用类型应该叫对象引用更好些,其英文是Object References
JavaScript中的某些运算符会做隐式的类型转换
x+"" // 等价于 String(x) 如88 + '6' => ’886’ +x // 等价于 Number(x).也可以写成x-0 如+'886' => number类型的886 !!x // 等价于Boolean(x) 如 !!'886' => true
最后是不是觉得JS类型转换很令人头疼,深入研究会发现更头疼,比如 [] == ![] 为啥为true 所以开发中要用=== 代替 ==,少一些莫名其妙的隐式类型转换,能用上TS就更好了,让强大的类型推导为难你解忧。
《JavaScript权威指南》 ECMA
The text was updated successfully, but these errors were encountered:
No branches or pull requests
显示类型转换
尽管JavaScript可以自动做许多类型转换, 但有时仍需要做显式转换, 或者为了使代码变 得清晰易读而做显式转换。
做显式类型转换最简单的方法就是使用Boolean()、Number()、String()或Object()函 数。
这边拿Boolean([]) 和Boolean('') 来说好了,有的同学可能会有困惑
来看看ECMA所述
Boolean()用的是ToBoolean方法;
参数为String中,string长度为0,也就是空字符串””时,Boolean显式转换为false,非空字符串为true;
而参数只要是Object类型,都被Boolean显示转换成true,而众所周知,[]数组属于Object类型的一种。
小测一下:
Boolean(new Boolean(false))
这结果显示为啥?答案是true,因为new Boolean(false)是对象而不是原始值
原始值也有人称为基本类型,但从翻译的角度来看Primitive Values应该译为原始值,而引用类型应该叫对象引用更好些,其英文是Object References
隐式转换
JavaScript中的某些运算符会做隐式的类型转换
后话
最后是不是觉得JS类型转换很令人头疼,深入研究会发现更头疼,比如 [] == ![] 为啥为true 所以开发中要用=== 代替 ==,少一些莫名其妙的隐式类型转换,能用上TS就更好了,让强大的类型推导为难你解忧。
Reference
《JavaScript权威指南》
ECMA
The text was updated successfully, but these errors were encountered: