js(JavaScript)-全局作用域、函数作用域、块级作用域

秒速五厘米 2023-01-02 05:24 355阅读 0赞

全局作用域

在全局声明的变量拥有的作用域叫做全局作用域。
例如:

  1. var a = "cat";
  2. //a的作用域就是全局,在函数内部也能使用
  3. function myFunction(){
  4. }

函数作用域

在函数内声明的变量拥有的作用域叫做函数作用域

  1. var a = "cat";
  2. //a是全局作用域,b在函数外面不能使用,因为声明在函数内部,作用域是函数作用域
  3. function myFunction(){
  4. //函数内部才能使用b
  5. var b = "dog";
  6. }

块级作用域

es6新加的作用域,用let、const可以声明拥有块级作用域.

  1. {
  2. var x = 10;
  3. }
  4. //此处可以用x
  5. {
  6. var y = 20;
  7. }
  8. //此处不能用y

作用域问题

使用var重新声明变量会带来问题

  1. var x = 10;
  2. {
  3. var x = 888;
  4. }
  5. console.log(x);//这里会显示888
  6. var x = 10;
  7. {
  8. let x = 888;
  9. }
  10. console.log(x);//这里会显示10

之前的困惑

块级作用域之前在js里是没有的,是在es6中才出现的,就是{ }产生的作用域,但是需要有let、const才算块级作用域,花括号可以是单个花括号也可以是if,for这些语法产生的花括号

发表评论

表情:
评论列表 (有 0 条评论,355人围观)

还没有评论,来说两句吧...

相关阅读

    相关 作用问题

    假设有五个按钮 利用for循环遍历这五个按钮 点击第i个按钮显示第i个按钮被点击 得到的结果却是:每次显示的都是遍历的最后第i个按钮 问题的原因:就在于for循环

    相关 Javascript作用

    Javascript没有块级作用域的概念。这意味着在块级语句中定义的变量,实际上是在包含函数中而非语句中创建的。 eg: function outputNumbe

    相关 ES6作用

    块级作用域 ① 全局作用域和函数作用域 在ES6之前只有 全局作用域和函数作用域,由于变量提升带来了一些不便。 1. 第一种场景,内层变量可能会覆盖外层变