美文网首页
javascript 数据类型和基本语法容易忽略的点

javascript 数据类型和基本语法容易忽略的点

作者: 子尐小太爷 | 来源:发表于2017-09-19 11:28 被阅读0次

数据类型

Number

JavaScript不区分整数和浮点数,统一用Number表示,以下都是合法的Number类型:

NaN;// NaN表示Not a Number,当无法计算结果时用NaN表示
Infinity;// Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity

比较运算符

JavaScript允许对任意数据类型做比较:

false==0;//true
false===0;//false

第一种 == 比较,它会自动转换数据类型再比较,建议避免使用,可以减少一些不必要的麻烦。
第二种 === 比较,它不会自动转换数据类型,先比较数据类型,不一致返回false,如果一致,会继续比较值是否相同。
【NaN】这个特殊的Number与所有其他值都不相等,包括它自己:

NaN === NaN; // false

唯一能判断NaN的方法是通过isNaN()函数:

isNaN(NaN); // true

【注】浮点数的相等比较:

1 / 3 === (1 - 2 / 3); // false

保险起见,在进行浮点类型的比较和运算的时候,如果可以选转换成整数型,最好转换为整数型再进行比较。

null和undefined

null表示一个“空”的值,它和0以及空字符串 '' 不同,0是一个数值,'' 表示长度为0的字符串,而null表示“空”。

JavaScript的设计者希望用null表示一个空的值,而undefined表示值未定义。事实证明,这并没有什么卵用,区分两者的意义不大。大多数情况下,我们都应该用null。undefined仅仅在判断函数参数是否传递的情况下有用。

关于变量

strict模式

JavaScript在设计之初,为了方便初学者学习,并不强制要求用var申明变量。这个设计错误带来了严重的后果:如果一个变量没有通过var申明就被使用,那么该变量就自动被申明为全局变量:

i = 10; // i现在是全局变量

在同一个页面的不同的JavaScript文件中,如果都不用var申明,恰好都使用了变量i,将造成变量i互相影响,产生难以调试的错误结果。

使用var申明的变量则不是全局变量,它的范围被限制在该变量被申明的函数体内,同名变量在不同的函数体内互不冲突。在实际项目开发中,尽量使用局部变量(有机会后面会针对这一块做详解)。

为了修补JavaScript这一严重设计缺陷,ECMA在后续规范中推出了strict模式,在strict模式下运行的JavaScript代码,强制通过var申明变量,未使用var申明变量就使用的,将导致运行错误。

启用strict模式的方法是在JavaScript代码的第一行写上:

'use strict';

这是一个字符串,不支持strict模式的浏览器会把它当做一个字符串语句执行,支持strict模式的浏览器将开启strict模式运行JavaScript。

参考资料:廖雪峰的官方网站:https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000

相关文章

网友评论

      本文标题:javascript 数据类型和基本语法容易忽略的点

      本文链接:https://www.haomeiwen.com/subject/wqtisxtx.html