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作用域的主要内容,如果未能解决你的问题,请参考以下文章