在ECMAScript5中引用了严格模式的概念。严格模式是为js定义了一种不同的解析模式和执行模型。在严格模式下ES3的一些不确定的行为将得到处理,对于某些不安全的操作将抛出错误。
function add(){
"use strict";
//函数体
}
使用的浏览器:IE10+,Firefox4+,Safari5.1+,Opera12+,Chrome
5. 语句
ES中的语句以分号结尾,如果没有加,将由解析器确定分号的位置。
var a = 10 //也是有效的但是不推荐
var b = 20; //推荐
虽然分号不是必须的但是,我们一般上线的代码都是要压缩的,如果没有分号很有可能会照成错误。
并且在莫种程度上可以增加代码的性能,因为解析器不再用花时间推测在哪里加分号。
二.关键字和保留字
ECMAScript-262描述了一组具有特定用途的关键字,一般用于控制语句的开始或结束,或者用于执行特定的操作等。关键字也是语言保留的,不能用作标识符。
ECMAScript全部关键字
break else new var
case finally return void
catch for switch while
continue function this with
default if throw
delete in try
do instanceof typeof
ECMAScript-262还描述了另一组不能用作标识符的保留字。尽管保留字在JavaScript中还没有特定的用途,但它们很有可能在将来被用作关键字。
ECMAScript-262第3版定义的全部保留字
abstract enum int short
boolean export interface static
byte extends long super
char final native synchronized
class float package throws
const goto private transient
debugger implements protected volatile
double import public
三. 定义变量
ECMAScript的变量是松散类型的,所谓松散类型就是用来保存任何类型的数据。定义变量时要使用var操作符(var是关键),后面跟一个变量名(变量名是标识符)。
var box;
alert(box);
这句话定义了box变量,但没有对它进行初始化(也就是没有给变量赋值)。这时,系统会给它一个特殊的值 -- undefined(表示未定义)。
var box= 'javascript';
alert(box);//javascript
所谓变量,就是可以初始化后可以再次改变的量。ECMAScript属于弱类型(松散类型)的语言,可以同时改变不同类型的量。(PS:虽然可以改变不同类型的量,但这样做对于后期维护带来困难,而且性能也不高,导致成本很高!)
var boxString = 'javascript';
boxString = 100;
alert(boxString);//100
重复的使用var声明一个变量,只不过是一个赋值操作,并不会报错。但这样的操作是比较二的,没有任何必要。
var box= 'javascript';
var box= 'java';
当你想声明多个变量的时候,可以在一行或者多行操作。
var box= 'javascript'; like = "java";
而当你每条语句都在不同行的时候,你可以省略分号。(PS:这是ECMAScript支持的,但绝对是一个非常不好的编程习惯,切记不要)。
var box= 'javascript'
var age= 100
alert(box)
可以使用一条语句定义多个变量,只要把每个变量(初始化或者不初始化均可)用逗号分隔开即可,为了可读性,每个变量,最好另起一行,并且第二变量和第一变量对齐(PS:这些都不是必须的)。
var box= 'javascript',
like = "java";
还有一种变量不需要前面var关键字即可创建变量。这种变量和var的变量有一定的区别和作用范围,
box= 'javascript';//有效但是不推荐
使用var 定义的变量将会成为定义该变量的局部变量,也就是说在一个函数中定义一个变量,该变量会在函数退出后被销毁。
functionadd(){var a = 10;//局部变量
}
add();
conosle.log(a);//错误
调用add时a变量被创建,并被赋值,之后a被销毁。
functionadd(){
a = 10;//全局变量
}
add();
conosle.log(a);//10