美文网首页
块级作用域

块级作用域

作者: 渝_波波 | 来源:发表于2019-10-11 23:09 被阅读0次
  • 块级作用域:es6中一对大括号就是一个块级作用域
  • 私有作用域:函数执行时形成的作用域,这个作用域中定义的变量外部不能访问,函数执行后就销毁

常见的块级作用域场景

  • 对象
  • if(){}
  • for(){}

块级作用域应注意 不能直接放在行首

{name:'xiaoming',age:10}

如果想表示一个对象 ,直接写,会认为是一个块级作用域。
通过括号包起来,或者通过定义变量的形式避免 { 位于行首即可

if条件判断中包含有定义变量的情况,会根据是否能进入条件来决定变量能否定义声明

if(1){  //可以进入条件判断
    var a=1;
    function geta(){
    }
}
console.log(a)   //1
console.log(geta)  //geta函数
//不能进入条件判断
//此时函数只会提前声明 不会定义,当条件成立先给函数赋值 代码再执行
if(0){   
    var a=1;
    function geta(){}
}
console.log(a)   //undefined
console.log(geta)  //undefined

for循环事件绑定,是一个异步操作
通常利用for循环给遍历的元素进行事件绑定,是一个异步操作
当元素执行事件的时候,才会触发绑定的事件,不可能一直挂起等待用户点击后才执行下一步

var doms = document.getElementsByTagName('div')
for(var i-0;i<doms.length;i++){
  doms[i].onclick = function(){
    alert(i)
  }
}

上面代码中i定义的是一个全局变量,外部可访问。最终div绑定的元素全部提示相同,都是doms.length
解决方案

  • 使用let定义i,使变量i变成私有的,外部不可访问
  • 给元素添加额外的属性
doms[i].index = i
doms[i].onclick = function(){
  alert(doms[i].index)
}
  • 利用闭包
  • setTImeout

相关文章

  • js 作用域

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

  • let、const和var的区别(个人笔记)

    1. 区别 (1)块级作用域块作用域由{ }包括,let和const具有块级作用域,var不存在块级作用域。块级作...

  • let,var和const

    var没有块级作用域,只有方法作用域常见的块级作用域,if(){}。for(){}。

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

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

  • 你真的懂let和const吗?

    块级作用域 在ES6之前我们脑海里应该只存在全局作用域和函数级作用域,没有块级作用域。那么为什么要引入块级作用域呢...

  • js高级知识点(第五天)

    所用域 什么是作用域 变量起作用的范围 什么是块级作用域,使用代码块限定的作用域是块级作用域(let声明的变量是块...

  • ES6->块级作用域

    块级作用域 为什么需要块级作用域? ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。第...

  • es6新增特性

    一、变量的改变 let 用来声明变量(块级作用域) const 用来表示常量(块级作用域) 块级作用域 就是在{}...

  • vue.js let与for的用法

    (一)块级作用域1.let声明的变量拥有块级作用域,块级作用域是一对大括号2.块级作用域可以直接写一对大括号,以后...

  • js声明提升

    块级作用域块级作用域是指花括号内的每一段代码都具有各自的作用域,而javascript没有块级作用域。javasc...

网友评论

      本文标题:块级作用域

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