块级作用域

2019-10-11  本文已影响0人  渝_波波

常见的块级作用域场景

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

{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
解决方案

doms[i].index = i
doms[i].onclick = function(){
  alert(doms[i].index)
}
上一篇 下一篇

猜你喜欢

热点阅读