在ES5阶段,变量是用var定义的。 没有块的概念,可以跨块访问,但不能跨功能; 有可变的改进。
ES6之后,不仅是之前的var定义变量,还可以定义let、const、function、class、import
(1)变量
var a; //undefined
var b = 10,c = true;
var声明的变量不需要初始化形参javascript 变量声明,输出为undefined,不会报错;
var声明的变量是可以改变的,有变量的改进(大多数语言都有块级作用域,但是JS使用var声明变量时,作用域是通过函数定义的,大括号“{}”不能限制 var 的范围);
var声明的变量作用域是全局的或者函数级的;
var声明的变量在窗口上;
(2) 让
(3)常量
(4)功能
function 命令用于定义(声明)函数:
function sum() {
var sum++
return sum;
}
(5)class请参考:阮一峰ES6基础教程中的classclass是ES6的句子糖,就是声明class的形式。 下面是一个简单使用的例子:
class Point {
constructor (x, y) {
this.x = x;
this.y = y;
}
toString () {
return this.x + ':' + this.y;
}
}
//使用Object.assign() 为对象添加方法属性
Object.assign(Point.prototype, {
getX () {
return this.x;
},
getY () {
return this.y;
}
})
let p1 = new Point(1,2);
console.log(p1.toString()); //1,2
console.log(p1.getX()); //1
console.log(p1.getY()); //2
console.log(Object.keys(Point.prototype)); // ["getX", "getY"]
示例2:
class Point2 {
constructor(xingBie, chineseName) {
this.xingBie = xingBie;
this.chineseName = chineseName;
}
getXingBie(){
return `您的性别为${this.xingBie }`;
}
getChineseName(){
return `您的中文名为${this.chineseName}`;
}
}
var yogel = new Point2("男","油垢")
console.log(yogel.getXingBie(),yogel.getChineseName())
(6)进口
ES6引入了自己的模块系统。 通过出口进口javascript 变量声明,进口出口。
与CommonJS不同的是,它获取的是模块的引用,只有使用的时候才能获取到值。