您的位置:首页 > Web前端 > JavaScript

JavaScript语句

2016-05-09 07:21 525 查看

声明语句(var, function)

var和function都是声明语句,分明声明变量和函数。

注意,多次声明同一个变量是无所谓的

使用var的话,只有变量声明提前了—变量的初始化代码依然在原来的位置。

然而使用function的话,函数名称和函数体均提前:脚本中的所有函数和嵌套函数都会提前声明,也就是说,可以在函数声明之前调用它。

和var语句一样,function声明语句创建的变量也是无法删除的。但是这些变量不是只读的,变量值可以重写。

条件语句

case

对每个case的匹配操作使用”===”恒等运算符比较,而不是”==”相等运算符,因此,表达式和case的匹配并不会做任何类型转换。

循环

for/in

for/in循环是用来更方便地遍历对象属性成员:

for(var p in o)
console.log(o[p])


在执行for/in语句时,JavaScript解释器首先计算object表达式。

如果表达式为null或undefined,JavaScript解释器将会跳出循环并执行后续的代码。

如果表达式是一个原始值,这个原始值将会转换为对应的包装对象(wrapper object)。

如果表达式是对象,则依次枚举对象的属性来执行循环。

需要注意的是,只要for/in的左值可以是可赋值的任意表达式:

var o = { x:1, y:2, z:3 };
var a = [], i = 0;
for(a[i++] in o)    // 使用数组元素做左值
...


for/in并不会遍历对象的所有属性,只有”可枚举”(enumerable)的属性才会遍历到。

如果for/in的循环删除了还未枚举的属性,那么这个属性不会被枚举到。如果循环体定义了对象的新属性,这些属性也不会被枚举到。

枚举的顺序:主流浏览器都按【先定义的属性先枚举】进行枚举。

跳转

try/catch/finally

当由于return、continue或break语句跳出try语句块时,解释器在执行新的目标代码之前会先执行finally块中的逻辑。

如果finally块使用了return、continue、break或者throw语句时,不管是使用程序挂起还是继续执行,解释器都会将其忽略。例如,如果finally抛出一个异常,这个异常将替代正在抛出的异常。如果finally运行到了return语句,尽管已经抛出了异常且这个异常还没有处理,这个方法依然会正常返回。

其他语句

with语句

with (object)
statement


这条语句将object添加到作用域链(scope chain)的头部,然后执行statement,最后反作用域链恢复到原始状态。

只有在查找标识符时才会用到作用域链,创建新的变量的时候不会使用,比如:

with(o)
x = 1;


如果对象o有一个属性x,那么这行代码给这个属性赋值为1。

如果对象o没有属性x,它给一个局部变量或全局变量x赋值,或者创建全局对象的一个新属性。

with语句只是提供了一个读取属性的快捷方式,并不能创建属性。

with语句的缺点

在严格模式中是禁止使用with语句的,使用with语句的代码非常难于优化,并且同没有使用with语句的代码相比,它运行得更慢。

debugger语句

在调试模式下,这条语句用来产生一个断点。

“use strict”

它只能出现在脚本代码的开始或者函数体的开始、任何实体语句之前。告诉JavaScript解释器使用严格模式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  var function case for-in with