es6中引入了什么作用域

es6中引入了“块级作用域”;es5中只有全局作用域和函数作用域,es6中由一对大括号包裹形成的作用域就是块级作用域,并明确允许在块级作用域中声明函数,函数声明语句的行为类似于let,在块级作用域之外不可引用。

es6中引入了什么作用域

本教程操作环境:windows10系统、ECMAScript 6.0版、Dell G3电脑。

es6中引入了什么作用域

ES6 引入了块级作用域,明确允许在块级作用域之中声明函数。ES6 规定,块级作用域之中,函数声明语句的行为类似于let,在块级作用域之外不可引用。

ES6标准中,由一对大括号包裹形成的作用域就是块级作用域。

ES5 规定,函数只能在顶层作用域和函数作用域之中声明,不能在块级作用域声明。

ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。

(1)内层变量可能会覆盖外层变量。

    var tmp = new Date();    function f() {        console.log(tmp);        if (false) {            var tmp = 'hello world';        }    }    f();//undefined

登录后复制

(2)用来计数的循环变量泄露为全局变量

    var s = 'hello';    for (var i = 0; i 

变量i只用来控制循环,但是循环结束后,它并没有消失,泄露成了全局变量。

示例如下:

// 浏览器的 ES6 环境function f() { console.log('I am outside!'); }(function () {  if (false) {    // 重复声明一次函数f    function f() { console.log('I am inside!'); }  }  f();}());// Uncaught TypeError: f is not a function

登录后复制

在ES6标准中,在块级作用域中声明函数,会将函数声明当做由var声明的变量,提升到块级作用域顶部,只将函数当做变量进行变量名声明,并不会声明函数体,上述代码相当于:

// 浏览器的 ES6 环境function f() { console.log('I am outside!'); }(function () {  var f = undefined;  if (false) {    function f() { console.log('I am inside!'); }  }  f();}());// Uncaught TypeError: f is not a function

登录后复制

【相关推荐:javascript视频教程、web前端】

以上就是es6中引入了什么作用域的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2931605.html

(0)
上一篇 2025年3月11日 20:11:45
下一篇 2025年3月7日 12:43:08

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • es6数组怎么求平均数

    方法:1、使用“arr.reduce(function(p,c){return p+c;})”语句,计算出数组中所有元素之和;2、使用“arr.length”语句,计算出数组元素的个数;3、使用“元素和/元素个数”语句,计算出数组的平均数。…

    2025年3月11日 编程技术
    200
  • es6中proxy的用法是什么

    在es6中,proxy用于拦截在一个对象上的指定操作,可以对外界的访问进行过滤和改写;Proxy在目标对象之前架设一层“拦截”,外界对该对象的访问都必须通过这层拦截,语法为“new Proxy(target, handler);”。 本教程…

    2025年3月11日
    200
  • es6怎么取数组前几个元素

    es6取数组前几个元素的两种方法:1、使用splice()截取数组片段,可获取前N个数组元素,语法“数组对象.splice(0,N)”;2、使用slice()截取数组片段,语法“数组对象.slice(0,N)”,可获取前N个数组元素。 本教…

    2025年3月11日 编程技术
    200
  • es6中find和filter有什么区别

    es6中find和filter的区别:1、在不改变数组的情况下查找数组内符合条件的内容时,find方法返回的结果是对象,filter方法返回的结果是数组;2、若没有值满足测试函数,find方法返回的是未定义,filter方法返回一个空数组。…

    2025年3月11日
    200
  • es6怎么判断是否是数组

    3种判断方法:1、使用“Array.isArray(数组对象)”语句来判断,如果是数组则返回true。2、使用“数组对象.constructor===Array”语句来判断。3、使用“数组对象 instanceof Array”语句来判断。…

    2025年3月11日 编程技术
    200
  • es6数组怎么去除特定的数

    es6数组去除特定数的方法:1、使用indexOf()函数获取特定数的索引(index),语法“数组对象.indexOf(数值)”;2、使用splice()函数根据获取的索引值删除元素,语法“数组对象.splice(index, 1)”。 …

    2025年3月11日
    200
  • foreach是es6里的吗

    foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){…})”;该方法不处理…

    2025年3月11日 编程技术
    200
  • es6中super的用法是什么

    super的用法:1、super作为函数时,用于表示父类的构造函数,语法为“constructor(){super();}”;2、super作为对象时,在普通方法中用于指向父类的原型对象,在静态方法中用于指向父类。 本教程操作环境:wind…

    2025年3月11日
    200
  • es6数组合并方法有哪些

    3种方法:1、使用“for(i in 数组2){数组1.push(数组2[i])}”,遍历数组,将一个数组的值添加到另一数组末尾;2、用“数组1.concat(数组2…)”语句连接多个数组;3、用“[…数组1,&#8…

    2025年3月11日 编程技术
    200
  • es6数组怎么去掉重复并且重新排序

    去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。…

    2025年3月11日 编程技术
    200

发表回复

登录后才能评论