类型转换
JavaScript 是弱类型语言,所以会在任何可能的情况下应用强制类型转换。
// 下面的比较结果是:true
new Number(10) == 10; // Number.toString() 返回的字符串被再次转换为数字
10 == '10'; // 字符串被转换为数字
10 == '+10 '; // 同上
10 == '010'; // 同上
isNaN(null) == false; // null 被转换为数字 0
// 0 当然不是一个 NaN(译者注:否定之否定)
// 下面的比较结果是:false
10 == 010;
10 == '-10';
ES5 提示: 以 0
开头的数字字面值会被作为八进制数字解析。
而在 ECMAScript 5 严格模式下,这个特性被移除了。
为了避免上面复杂的强制类型转换,强烈推荐使用严格的等于操作符。
虽然这可以避免大部分的问题,但 JavaScript 的弱类型系统仍然会导致一些其它问题。
内置类型的构造函数
内置类型(比如 Number
和 String
)的构造函数在被调用时,使用或者不使用 new
的结果完全不同。
new Number(10) === 10; // False, 对象与数字的比较
Number(10) === 10; // True, 数字与数字的比较
new Number(10) + 0 === 10; // True, 由于隐式的类型转换
使用内置类型 Number
作为构造函数将会创建一个新的 Number
对象,
而在不使用 new
关键字的 Number
函数更像是一个数字转换器。
另外,在比较中引入对象的字面值将会导致更加复杂的强制类型转换。
最好的选择是把要比较的值显式的转换为三种可能的类型之一。
转换为字符串
'' + 10 === '10'; // true
将一个值加上空字符串可以轻松转换为字符串类型。
转换为数字
+'10' === 10; // true
使用一元的加号操作符,可以把字符串转换为数字。
译者注:字符串转换为数字的常用方法:
+'010' === 10
Number('010') === 10
parseInt('010', 10) === 10 // 用来转换为整数
+'010.2' === 10.2
Number('010.2') === 10.2
parseInt('010.2', 10) === 10
转换为布尔型
通过使用 否 操作符两次,可以把一个值转换为布尔型。
!!'foo'; // true
!!''; // false
!!'0'; // true
!!'1'; // true
!!'-1' // true
!!{}; // true
!!true; // true
分享到:
相关推荐
javascript实例应用---计数转换类.rarjavascript实例应用---计数转换类.rarjavascript实例应用---计数转换类.rarjavascript实例应用---计数转换类.rar
图片转换效果.rar图片转换效果.rar图片转换效果.rar图片转换效果.rar图片转换效果.rar图片转换效果.rar
javascript-obfuscatorJS编码器
JavaScript教程--从入门到精通JavaScript教程--从入门到精通JavaScript教程--从入门到精通JavaScript教程--从入门到精通JavaScript教程--从入门到精通JavaScript教程--从入门到精通JavaScript教程--从入门到精通...
iconv-lite - 纯javascript转换字符编码
JavaScript教程--从入门到精通 PPT 精简版
前端项目-javascript-canvas-to-blob,javascript canvas to blob是一个将画布元素转换为blob对象的函数。
03-3D 转换一 3D 转换概念三维坐标系:X 轴:水平向右,X 轴原点的右边是正值,左边是负值Y 轴:垂直向下,Y 轴原点的下方是正值,上边是负值Z 轴:垂
parseInt()-将字符串转化为整型 parseFloat()-将字符串转化为浮点数 ...String()-函数能够将任何类型的值转换为字符串 tostring()-将数字转换为进制 Boolean()-转换为Boolean值 toFixed-()将数值转换为字符串
是一款将Html源文件直接变成 JavaScript 输出代码的小工具。主要作用是在建设网站时无须重复制作一些相同的代码,而使用JavaScript的生成代码 (原因是 JavaScript 能够方便的插入到网页的任何地方)。
类型转换是网页编程不可或缺的内容,本文先介绍自动类型转换,接着是强制性的显式类型转换,最后如何将基本数据类型提升为对象。 JavaScript的数据类型分为基本数据类型和复合数据类型。复合数据类型主要有对象、...
目前仅有的讲JavaScript的测试驱动开发的书,英文版,Amazon书评4星级的好书。
时间日期转换.rar时间日期转换.rar时间日期转换.rar时间日期转换.rar时间日期转换.rar时间日期转换.rar
JavaScript应用实例-时间截转换小工具.js
Javascript-将人民币数字转换成大写形式.docx
JS 类型转换规则总结JS 隐射类型转换// 会输出100 + 问题parseInt 的坑1 与 Number(1)有什么区别// Number {[[Prim
JavaScript Garden是有关JavaScript编程语言中最古怪的部分的文档的不断增长的集合。 它提供了一些建议,以避免常见的错误,细微的错误以及性能问题和非专业JavaScript程序员在尝试深入该语言时可能遇到的不良做法。...
比较全面和严谨的且包含很多中文的部分,打开后请点击: 开始看 Enter>> 进入JavaScript目录