美文网首页
JS与块作用域

JS与块作用域

作者: xiaoguo16 | 来源:发表于2017-08-22 10:34 被阅读0次

JS中没有块作用域的概念,所以下列的代码中的i可以在全局环境中访问,但这样会有一个弊端:污染了全局环境,因为在大型工程中,有可能会导致变量冲突。

for(var i=0;i<5;i++){
    console.log(i)
}

但是JS中仍然有一些语句可以实现块作用域的功能:

JS中块作用域效果的实现:

  • with
var obj={
    a:4,
    b:5
};
with(obj){
    a=5;
    b=4;
}
console.log(obj);
  • try/catch
    try/catch中的catch分句会创建一个块作用域:
try{
    
}catch (err){
    console.log(err)
}

上述代码中的err只可以在catch分句中访问

  • let/const
    ES6中加入了两个声明变量的方式,let和const,这两种方式所声明的变量会绑定到所在的任意作用域中,通常是{...}的内部,二者区别:let声明的变量可修改,const不可修改。
  • IIFE
    立即执行函数也可以达到将变量封装在函数作用域中的作用,防止污染全局环境:
(function () {
    for(var i=0;i<5;i++){
        console.log(i)
    } 
})()

相关文章

  • 变量作用域

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

  • let 和 const

    一、JS中的块级作用域 ES6之前JS不支持块级作用域在ES6之前,JS是没有块级作用域这个概念的,只有全局作用域...

  • 你不知道的JS-上卷

    作用域整体理解:JS作用域分为函数作用域,全局作用域,with和try catch形成的块级作用域。 JS引擎在编...

  • JS语法基础整理

    块作用域 : { }JS中作用域有:全局作用域、函数作用域。没有块作用域的概念。ECMAScript 6(简称E...

  • sample

    一、var与let JS中的块级作用域,var、let、const三者的区别 var是函数级作用域,没有块级作用域...

  • JavaScript块级作用域

    块作用域{ }JS中作用域有:全局作用域、函数作用域。没有块作用域的概念。ECMAScript 6(简称ES6)中...

  • es6基础知识2

    1. 块作用域 作用域指的是变量的作用范围,js本身具有了全局作用域和函数作用域,es6中新增了块作用域。块作用域...

  • js 作用域

    js 作用域主要有:全局作用域和局部作用域,es5之前没有块级作用域,es6有了块级作用域 何为块级作用域,块级作...

  • JS的作用域

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

  • 第七章 块级作用域、私有变量

    模仿块级作用域 私有变量  js没有块级作用域,只有全局作用域和局部作用域(函数作用域),块级作用域是指某一部分代...

网友评论

      本文标题:JS与块作用域

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