首页 > 代码库 > JS的块级作用域
JS的块级作用域
今天带来的是 “对《你不知道的js》中块级作用域的总结” 分享:
1)用with从对象中创建出来的作用域只在with声明中而非外部作用域有效,同时可以访问已有对象的属性并将其添加到已有对象上
代码demo:
var obj = { a:1, b:2, c:3 }; with(obj){ a=3; b=4; c=5;
d=6; } console.log(obj);//3,4,5
2)try/catch 的catch分句会创建一个块级作用域,其中声明的变量仅在catch内部有效
代码demo:
try{ undefined();//执行一个非法操作来强制制造一个异常 } catch(err){ console.log(err);//能够正常执行 } console.log(err);//ReferenceError:err is not defined
3)let用法:可以将变量绑定到所在的任意作用域中(通常是{...}内部)
代码demo:
for(i = 1; i < 5; i++){ console.log(i);//1 2 3 4 } console.log(i);//5 for(let j = 1; j < 5; j++){ console.log(j);//1 2 3 4 } console.log(j);//ReferenceError: j is not defined
由于let创建的是块级作用域,所以外部无法访问到let声明的变量
4)const:可以用来创建块作用域变量; 其值是固定的(常量),之后任何试图修改值的操作都会引起错误
代码demo:
var foo = true; if(foo){ var a = 2; const b = 3;//包含在if中的块作用域常量 a = 3;//正常 //b = 4;//错误 //console.log(b);//TypeError: invalid assignment to const `b‘(这里说明其值为常量,之后不能更改其值) } console.log(a);//3
console.log(b);//ReferenceError!(这个异常可以证明const创建的块作用域)
JS的块级作用域
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。