js语句

一、block块
{}表示一个块语句,并且在js中,没有块级作用域的概念
例如
for(var i=0;i<10;i++){}
此处看起来好像在for语句里定义了一个局部变量i,其实不然,在外部同样可以访问i
即上面的语句同 var i=0;for(;i<10;i++)
二、try{}catch(ex){}finally{}
其中try块里用来抛出异常,catch语句里用来捕获异常,finally则是,不管有没有出现异常,程序总是会去执行。该语句可以没有catch或者没有finally.

try{
    throw 'test'
}catch(ex){
    console.log(ex);//返回‘test’
}finally{
    console.log('finally');
}
 test
 finally

注意,异常抛出后,总是会由里到外查找最近的catch语句处理,然后再执行finally

try{
    try{
        throw new Error('test');
    }
    finally{
        console.log('inner finally');
   }
}catch(ex){
    console.log(ex.message);
}
inner finally
test

分析上面的代码,第一个外部的try语句里嵌套了另一个try语句,在内部try抛出错误,但是内部没有catch语句对错误进行处理,所以会先执行内部的finally{},接着,外部定义了一个catch语句,即所能找到的最近的catch语句,错误会在此处进行处理。所以上面的返回结果是inner finally test
三、for…in语句

var a;
var obj ={x:1,y:2,z:3}
for(a in obj){
}

使用for…in语句要十分注意:

其对数据的遍历顺序是不确定的; 若是对象的标签属性enumberable为false的话,不会遍历出来;其会把对象原型链上enumberable为true的属性也遍历出来。
四、严格模式
在整个js文件顶部声明”use strict”,或者在方法里的第一行声明‘use strict’
1、在严格模式中,不允许使用with语句;
2、arguments变为参数的静态副本

(function(a){
arguments[0] = 100;
console.log(a);
})(1)
//此处返回100,arguments的值的改变同样会影响到a的值

(function(a){
'use strict'
arguments[0] = 100;
console.log(a);
})(1)
//若是改为严格模式
//此处a仍然返回1,并不会受arguments值的改变的影响

(function(a){
'use strict'
arguments[0] = 100;
console.log(a);
})()
//返回undefined。注意,若是不传入a的值,不管是不是严格模式,这里即使改变了arguments[0]的值,也不会影响到a的值

(function(a){
'use strict'
arguments[0].x = 100;
console.log(a.x);
})()

这里我们要注意,不管是否是严格模式,如果传入参数是对象,arguments对对象的属性值做改变的话,会影响传入的对象的属性值

(function(a){
'use strict'
arguments[0].x = 100;
console.log(a.x);
})({x:1})
100
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值