因此,ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现(另外的ECMAScript方言还有Jscript和ActionScript)。日常场合,这两个词是可以互换的
ECMAScript是由ECMA(一个类似W3C的标准组织)参与进行标准化的语法规范。
ECMAScript定义了:
语言语法 – 语法解析规则、关键字、语句、声明、运算符等
类型 – 布尔型、数字、字符串、对象等
原型和继承
内建对象和函数的标准库 – JSON、Math、数组方法、对象自省方法等。
ECMAScript标准不定义HTML或CSS的相关功能,也不定义类似DOM(文档对象模型)的Web API,这些都在独立的标准中进行定义。ECMAScript涵盖了各种环境中JS的使用场景,无论是浏览器环境还是类似node.js的非浏览器环境
3.基本语法
======
3.1声明变量
=======
var 声明普通变量
let 定义局部变量
const 定义常量
var a = 1
let a = 1
const a = 1
-
let 声明局部变量
- ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
-
const 声明常量
-
const声明一个只读的常量。一旦声明,常量的值就不能改变。
-
使用const命令声明变量,此变量必须立即初始化,不能留在后面赋值。否则会报错。
-
const的作用域与let命令相同:只在声明所在的块级作用域内有效
-
3.2模板字符串
- 模板字符串 用于简化字符串拼接 ES6字符串拼接的符号是``
//ES5 ,拼凑字符串
var str = "<table>" +
"<tr>" +
"<td>标题</td>" +
"</tr>" +
"</table";
//ES5 , /换行
var str2 = "<table> \
<tr> \
<td>标题</td> \
</tr> \
</table>";
//ES6
var str3 = `
<table>
<tr>
<td>
</td>
</tr>
</table>
`;
- 在模板字符串中 可以使用${变量名}获取变量的值
var username = 'jack';
var age = 18;
console.info(`你的姓名是${username} , 你的年龄是${age}`);
3.3对象简写
- 简化对象的写法 同名属性名可以省略 function可以省略
let name = "张三";
let age = 18;
let person = { //ES5写法
name : name,
age : age,
getAge : function(){
return this.age;
}
}
console.info( JSON.stringify(person));
console.info( person.getAge() );
let person2 = { //ES6写法
name, //省略同名的属性值
age,
getAge(){ //省略 function
return this.age;
}
}
console.info( JSON.stringify(person2));
console.info( person2.getAge() );
3.4箭头函数
- 箭头函数:用于定义匿名函数的一种简洁写法。(与Java中Lambda表达式极其相似)
//匿名函数
let fn = function(a,b){
return a + b;
}
console.info( fn(5,10) ) //15
//箭头函数基本语法
let fn2 = (a,b) => {
return a + b;
}
console.info( fn2(5 , 3) ) //8
//省略1:只有一个参数的情况下,小括号可以省略
// 完整写法
let fn3 = (a) => {
return a * a;
}
console.info( fn3(5) ) //25
// 省略写法