• ES6 语法


    ES6 语法

    • let 和 var

    let 有块级作用域

    var 没有块级作用域

    if 和 for 是没有作用域的, 但函数有作用域

    没有块级作用域产生的问:

    <button>按钮1</button>
    <button>按钮2</button>
    <button>按钮3</button>
    <button>按钮4</button>
    <button>按钮5</button>
    
    var btns = document.getElementsByTanName('button');
    for (var i=0; i < btns.length; i++) {
    	btns[i].addEventListener('click',function() {
    		console.log('第' + i +'个按钮被点击');
    	})
    }
    

    目的当点击哪个按钮,控制台打印:第几个按钮被点击

    输出结果为:第5个按钮被点击

    用闭包可以解决,因为函数是有作用域的 为什么闭包可以解决问题: 函数是有作用域的

    var btns = document.getElementsByTanName('button');
    for (var i=0; i < btns.length; i++) {
    	(function (num) {
            btns[num].addEventListener('click',function() {
                console.log('第' + num +'个按钮被点击');
            });
    	})(i)
    }
    
    // 立即执行函数
    (function () {
    
    })()
    

    ES5之前因为 if 和 for 都没有块级作用域,所以在很多时候需要借助函数function的作用域来解决问题

    ES6中加入了 let ,let 是有 if 和 for 的块级作用域

    用ES6 的写法

    const btns = document.getElementsByTanName('button');
    for (let i =0; i < btns.length; i++){
    	btns[i].addEventListener('click',function() {
                console.log('第' + i +'个按钮被点击');
        });
    }
    
    • const 关键字

    注意一: 一旦给 const 修饰的标识符被赋值后,不能修改

    const name = "why";
    
    name = 'abc'
    
    

    注意二:在使用 const 定义的标识符,必须进行赋值

    const name;
    

    注意三: 指向的对象不能修改,但可以改变对象内部属性的值

    const obj = {
    	name:"李四",
    	age: 18,
    	height: 180
    }
    
    console.log(obj)
    
    obj.name = "张飞"
    obj.age = 22
    obj,height = 185
    
    console.log(obj)
    
    • ES6对象的字变量增强写法

      1. 属性的增强写法
      const name = "李四";
      
      const age=18;
      
      const height =  1.88;
      // ES5 的写法
      const obj = {
          name:name,
          age:age,
          height:height
      }
      // ES6 的写法
      const obj = {name,age,height}
      
      1. 函数的增强写法
      const obj = {
      	// ES5 写法
          run: function(){
      	
      	}
      }
      
      const obj = {
          // ES6 写法
          run(){
              
          }
      }
      
  • 相关阅读:
    170516、ActiveMQ 的安装与使用(单节点)
    170515、mybatis批量操作
    170512、java日志文件log4j.properties配置详解
    170511、Spring IOC和AOP 原理彻底搞懂
    170510、数据库默认隔离级别
    170509、文本编辑器编写的shell脚本在linux下无法执行的解决方法
    170508、忘记jenkins密码或者修改jenkins密码
    170505、MySQL的or/in/union与索引优化
    170504、MongoDB和MySQL对比(译)
    Jenkins Android 打包
  • 原文地址:https://www.cnblogs.com/1204it-ly/p/14341072.html
Copyright © 2020-2023  润新知