JavaScript的特性 ver.0

JavaScript的许多语法都与Java类似,因此我在这个系列中只会记录一些JS中特有的性质。

0.基本语法:

  在语法方面,JS与JAVA一致,都是要求在语句后添加分号。然而JS本身不强求每个语句都要加上分号,浏览器的引擎可以自动添加分号。然而为了避免歧义,最好坚持像JAVA一样添加分号。

1.数据类型:

  JavaScript中数字变量只有一种形式:Number类型,它不会区分整型抑或是浮点型。

  与JAVA类似,JS中也存在一种类型为‘null', 其表示一种空的值,不同于0(表示一个数值)和‘ ’(表示一个空的字符串),这就表示“空”。然而在JavaScript中,还有一个跟null类似的类型,它就是'undefined', 表示未定义。null表示一个空的值,undefined表示值未定义。然而实际上,区分两者的意义不大。大多数情况下,我们都应该用nullundefined仅仅在判断函数参数是否传递的情况下有用。

  要特别注意相等运算符==。JavaScript在设计时,有两种比较运算符:

  第一种是==比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;

  第二种是===比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较。

  由于JavaScript这个设计缺陷,不要使用==比较,始终坚持使用===比较。

  另一个例外是NaN这个特殊的Number与所有其他值都不相等,包括它自己:

   NaN === NaN; // false  

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

变量在JavaScript中就是用一个变量名表示,变量名是大小写英文、数字、$_的组合,且不能用数字开头。变量名也不能是JavaScript的关键字,如ifwhile等。申明一个变量用var语句,比如:var a; var $b=1;

在JavaScript中,使用等号=对变量进行赋值。可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用var申明一次,例如:var a; a=1;

JS是动态语言,变量类型不会固定,JAVA是静态语言,定义变量时必须制定变量类型!

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。

posted @ 2020-12-20 15:15  M1stF0rest  阅读(82)  评论(0编辑  收藏  举报