28°

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

本文转载自博客园,原文链接:https://www.cnblogs.com/qjb2404/p/12202505.html

全部评论: 0

    我有话说: