首页 > 编程语言 > 详细

javascirpt的作用域

时间:2021-06-09 09:17:45      阅读:33      评论:0      收藏:0      [点我收藏+]

作用域简单地来说就是一套良好的存取变量的规则

一、全局作用域

在全局作用域定义的变量,可以作为window(浏览器环境)或global(nodejs环境)的属性访问

很多场景下声明的全局变量是作为 多处使用的常量,在ECMAScript或commondjs模块环境中可以使用一个或一系列js文件来声明

二、函数作用域

function foo() {
 //函数作用域,可以嵌套
 var a = 100 //外部无法访问


}

函数作用域可嵌套多层,如果不让函数名可以访问,可以使用立即执行函数:

(function foo(){
  //函数作用域
  var a = 100

})()

 

 三、块作用域

1, try...catch中的catch声明的变量是在狂作用域(不建议使用)

try {
   bar()

} catch (error) {
  //外部无法访问
  console.log(error)
  var a = 100 
    
}

console.log(error) //报错,
console.log(a) //报错

2. with语句(严格模式下禁止使用,不建议使用)

var obj = { a: 100 }
with(obj) {
  a = ‘hello‘
}

3. eval()函数(不建议使用)

4. 通过立即执行函数实现块作用域

5. 在es6中原生支持了块作用域

//打括号包含的代码块构成一个块作用域
{
  var a = 100. //外部无法访问
  let b = ‘hello‘ //外部无法访问

}

 

javascirpt的作用域

原文:https://www.cnblogs.com/devinzh/p/14008795.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!