js作用域

Posted bobo2404

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js作用域相关的知识,希望对你有一定的参考价值。

作用域分为4种:

一.全局作用域window:函数外部定义的变量

注:1.var abc=123; 是全局变量,不能删除delete abc结果为false

       abcd=2345  没有用var定义的变量是作为window的属性使用,可以删除 delete abcd || delete window.abcd 结果为true

       2.在函数内部没有使用var定义的变量不具备函数作用域,它是具备全局作用域的,是window的属性不是全局作用域

二.函数作用域(局部作用域)function:在函数内部定义的变量,对外是封闭的,从外层的作用域无法直接访问函数内部的作用域

如果想在函数外部引用函数内部的值有两种方法

1.在函数内部return返回变量 

 

function test(){
   var a = 3
   return a
}
console.log(test())

 

 

2.使用闭包

function test(){
   var a = 2
   function test2(){
      return a
   }
   return test2()
}
console.log(test())
 

 

三.块状作用域{}

在es6之前没有块状作用域,关于什么是块,只要认识{}就可以

if(true){
  let a = 1
  console.log(a)
}

 

四.动态作用域this

window.a=3
function test(){
  console.log(this.a) //a
}
test()
test.bind({a:100})()  //100

以上是关于js作用域的主要内容,如果未能解决你的问题,请参考以下文章

JS 作用域及作用域链

JS---闭包

JavaScript 作用域 与 作用域链

js 中采用词法作用域

js作用域相关笔记

浅析作用域链–JS基础核心之一