美文网首页
01. 作用域

01. 作用域

作者: 章音十 | 来源:发表于2020-04-26 18:02 被阅读0次

1. 作用域

1.1 全局作用域

  • 众所周知,js在引入块级作用域之前是没有块级作用域的。
  • 全局作用域:在其他地方都能访问得到的地方。在js中,可以简单理解为在函数之外。
  • 注意点:
var a = 123
b = 1234

delete a // false
delete b // true

/*
以上两种方式虽然都能在全局中访问,但是有很大区别:
1. 采用var声明的变量无法用delete删除(因为变量是无法删除的)
2. 采用第二种方式产生的“变量”,本质上是全局对象window的属性,
所以可以用delete操作符进行删除
*/

function test() {
  c = 233
}
test()
console.log(c) // 233

/*
在函数中不使用var进行声明的“变量”,作为window的属性存在
*/

1.2 函数作用域

  • 让变量只在函数内部可访问 (金屋藏变量)
function test() {
  var a = 3
  return a + 4
}
console.log(test()) // 7
console.log(a) // Error: a is not defined
  • 问题:a的生存期只在函数内部,那么如何在函数外部拿到a的值?
    答:使用return,或者使用闭包

1.3 块级作用域

  • {}形成一个围墙,里面的变量外面拿不到

1.4 动态作用域

  • 作用域可以改变
window.a = 3
function test() {
  console.log(this.a)
}
test()
test.bind({ a: 100})()
// this的指向改变了,函数在不同的情况下执行得到的结果可以是不同的

相关文章

  • 01. 作用域

    1. 作用域 1.1 全局作用域 众所周知,js在引入块级作用域之前是没有块级作用域的。 全局作用域:在其他地方都...

  • js作用域

    1 - 作用域 1.1 作用域概述 全局作用域 局部作用域(函数作用域) 1.2 全局作用域 1.3 局部作用域 ...

  • 作用域,作用域链

    1 - 作用域 1.1 作用域概述 全局作用域 局部作用域(函数作用域) 1.2 全局作用域 1.3 局部作用域 ...

  • 变量作用域

    变量作用域:静态作用域、动态作用域JS变量作用域:JS使用静态作用域JS没有块级作用域(全局作用域、函数作用域等)...

  • 一网打尽 JavaScript 的作用域

    JavaScript 的作用域包括:模块作用域,函数作用域,块作用域,词法作用域和全局作用域。 全局作用域 在任何...

  • 作用域

    词法作用域,动态作用域,全局作用域,局部作用域,函数作用域,块级作用域,有些地方还能看到隐式作用域和显示作用域。 ...

  • JS的作用域

    JS的作用域: 全局作用域、函数作用域、eval 作用域、块级作用域 全局作用域: 函数作用域: 结果截屏: 说...

  • [ES6]1.1作用域

    作用域 全局作用域(global/window) 函数作用域/局部作用域(function) 块状作用域({}) ...

  • C - 作用域

    C - 作用域 一个 C 变量的作用域可以是: 块作用域 函数作用域 函数原型作用域 或 文件作用域 作用域描述程...

  • JavaScript作用域分类

    JavaScript作用域分类全局作用域局部作用域函数作用域块级作用域catchwithlet 和 const 什...

网友评论

      本文标题:01. 作用域

      本文链接:https://www.haomeiwen.com/subject/igejwhtx.html