深入理解ES6学习记录---1、块级作用域(var,const,let的区别)

1.

var count = 30;
if(count) {
let count=11;
console.log("里面的"+count); ///11
}
console.log("外面的"+count); ///30
 var,const,let
  Var定义的变量会被提升到作用域顶部,const和let不会被提升(同个代码块中,声明在下面,上面调用就会造成临时死期错误(tdz)。不同代码块外,不会出现临时死期)
    1、const定义的变量不能在被修改,但定义的对象可以修改对象里面属性的值
    2、 let定义的变量可以在被修改

2.

变量使用var
var funcs = [];
        for(var i=0;i<10;i++){
            funcs.push(()=>{
                console.log(i);
            })
        }
        funcs.forEach((func)=>{
            console.log(i);///这里的i都是10
            console.log("fun"+func); ///这里输出的是10个function
            func(); /// 就会输出10个10
        })
变量使用let
var funcs = [];
        for(let i=0;i<10;i++){
            funcs.push(()=>{
                console.log(i);
            })
        }
        //forEach 是es5的写法(使用foreach遍历数组的话,使用break不能中断循环,使用return也不能返回到外层函数。)
        funcs.forEach((func)=>{
            console.log(i);///这句是会报错的,i不在此取到
            console.log("fun"+func); ///这里输出的是0-9的个function
            func(); /// 就会输出0-9
        })
 变量使用const,第一次迭代不会报错,但是第二次迭代就会出错

3. in 、(for in获取的值是索引) (for of获取的值是数组的值)
要取对象中的属性,就可以引用in

for in更适合遍历对象,不要使用for in遍历数组
///用for of遍历数组
  object = {
               a: true,
               b: true,
               c :true
           };
           //这里可以定义key是let,也可以用consr来定义const。(因为他这里是每次都是创建一个新的绑定)
           for(let key in object){
         console.log(key);   // a b c
        }

ES5的Object.keys(myObject)获取对象的实例属性

 Object.keys(object1).forEach((key,index)=>{
            console.log(key,object1[key]); // a true,b true, c true
        })

4. 全局对象跟定义的数据 var 定义的变量,会覆盖全局的window的变量。

///这种情况常见于在浏览器中跨iframe或者跨window访问代码时用到
var RegExP ='HELLO'
window.RegExP == RegExP ;
但是如果是let或者const
let RegExP ='HELLO'  /// 不想改变全局对象
window.RegExP != RegExP ;

而const和let定义的变量,是在全局下新增一个新的绑定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值