我是靠谱客的博主 大意音响,这篇文章主要介绍超易懂全局作用域 函数作用域 块级作用域一.全局作用域二,函数作用域三,块级作用域,现在分享给大家,希望可以做个参考。

一.全局作用域

  • 变量的声明  直接在script中声明就是全局变量  与window属性挂钩
复制代码
1
2
3
console.log(window.a); //undefind 因为a提升到了顶部,赋值还在原位置,所以等于undefind var a = 1 console.log(window.a); //1 window可省略
  • 注意:let const 不与window挂钩  指向undefind
  • 函数的声明
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
foo() //Function foo 函数提升到了顶部 function foo(){ console.log('Function foo'); } foo() //Function foo foo2() //foo2 is not function 因为foo2提升到了顶部,赋值还在原位置所以等于undefind var foo2 = function(){ console.log("Function foo2"); } foo2() //Function foo2

二,函数作用域

  • 在函数内部声明的变量又叫局部变量
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(function(){ --------直接声明函数--------- asc() //123456 直接声明函数会提升到函数作用域顶部 function asc(){ console.log("123456"); } asc() //123456 ----------赋值声明函数---------- asc2() // asc2 is not function //因为asc2 提升到了函数作用域顶部 var asc2 = function(){ console.log("123456789"); } asc2() // 123456789 }())
  • 注意,如果变量提升和函数提升同时在的话 函数优先

三,块级作用域

  • 抛开let var const  在块内声明变量
复制代码
1
2
3
4
5
6
7
8
console.log(b);//b is not defined { console.log(b);//b is not defined b = 3 console.log(b); //3 } console.log(b); // 3
  • 当抛开const var let 环境的时候  块内默认声明的变量必须执行完代码块的内容才会有效 window才会有b这个属性
  • 块级作用域变量的声明
复制代码
1
2
3
4
5
6
console.log(a); //undefined 重新声明个var a = undefined { console.log(a); //undefined a提升到了块级作用域顶部 赋值留在原位置 var a = 1 } console.log(a); // 1 为全局a赋值
  • 块内定义的变量会被提升到全局 也会提升到块级作用域顶部 重新声明个关键次 赋值undefined,执行完块内变量后重新赋值 
  • 问题来了,下面一句代码很诧异
复制代码
1
2
3
4
console.log(a); //undefind { function a(){} }
  • 输出 undefined 还记得块内的默认变量吗?它如果这样子写会报错的,但是函数声明就不会,因为正如阮一峰老师那篇文章所说

 

最后

以上就是大意音响最近收集整理的关于超易懂全局作用域 函数作用域 块级作用域一.全局作用域二,函数作用域三,块级作用域的全部内容,更多相关超易懂全局作用域内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(81)

评论列表共有 0 条评论

立即
投稿
返回
顶部