以前一直用 var 来声明变量,ES6 新增 let 和 constjavascript
script type="text/javascript"> // let声明变量块级做用域,不能重复声明 // let声明的变量 是块级做用域,不能重复声明 // { // // let a = 12; // let a = 12; // let a = 13; // } // console.log(a); // var 的坑 ,循环的时候会按照最后一次的赋值 // var a = []; // for (var i = 0; i < 10; i++) { //这里的 var i 换成 let i 便可解决 // a[i] = function () { // console.log(i); // }; // } // a[6](); // var 10 ,let 6 // var 会发生变量提高 console.log(foo); // 输出undefined var foo = 2; // let 不发生变量提高 console.log(foo); // 报错 ReferenceError let foo = 2; // const 声明常量,一旦声明,当即初始化,不能重复声明。 const foo; // 没当即赋值,会报错 // const 声明是只读常量,不可更改 const P = 1 P = 2 // 报错没法更改 </script>
更加的简单的拼接字符串 用 ${} 来填入java
<script> var a = 1; var b = 2; // var str = "哈哈哈哈" + a + "嘿嘿嘿" + b; // ` xxx${}xxxx${}xxx` 注意反引号 var str = `哈哈哈哈${a}嘿嘿嘿${b}`; console.log(str); </script>
操做更加简单了,可是改变了特性形成了不便es6
<script> // function(){} --等同于--- ()=>{} // 1.this的指向发生改变,指向了定义对象时的对象 // function(){} 的时候至关于 self // ()=>{} 的时候至关于 windows对象 // 2.arguments不能使用,没法再经过 arguments 拿全部的参数 var person = { name:'张三', age: 18, fav:()=>{ console.log(this); // windows console.log(arguments); // 报错不存在 } } person.fav(); </script>
对象单体模式windows
为了解决箭头函数的问题模块化
(){} 彻底等同于 function(){} 再也不有上面的困扰了函数
<script> var person = { name:'张三', age: 18, fav(){ console.log(this); console.log(arguments); } } person.fav(); </script>
ES6的面向对象this
<script> // 构造函数的方式建立对象 // function Animal(name,age){ // this.name = name; // this.age = age; // } // Animal.prototype.showName = function(){ // console.log(this.name); // } // Animal.prototype.showName2 = function(){ // console.log(this.name); // } // Animal.prototype.showName3 = function(){ // console.log(this.name); // } // Animal.prototype.showName4 = function(){ // console.log(this.name); // } // var dog = new Animal('日天',18) class Animal{ constructor(name,age){ // 必需要 constructor 初始化属性 相似于 init this.name = name; this.age = age; } // 这一行必定不要加逗号 showName(){ console.log(this.name) } } var d = new Animal('张三',19); d.showName(); </script>