目录
4.2.1 对象的简写形式:对象属性名简写/函数(方法)的简写【重点】
5.2.3 解构默认值:解构失败时则默认值为undefined
一,ECMASCript6简介
ECMAScript 6.0(以下简称 ES6)泛指 JavaScript 语言的下一代标准。
ES6与ES5:
ES6是javascript在2015年6推出的,在这之前的javascript称为ES5,以后每年6年会推出一个新版本、但改动不大;
ECMASCript与JavaScript:
ECMASCript是规范、标准,而JavaScript是规范的实现;
Javascript遗留问题
闭包、面向对象编程等
ECMAScript6历史版本
二,let和const命令
ES6 新增了let
命令,用来声明变量。
ES6新增了const
命令用来声明一个只读的常量。
2.1 let命令
2.1.1 基础用法
let tel = 110
2.1.2 let命令特点【重点】
-
let不存在变量提升且let有暂时性死区,var有变量提升;
//let有暂时性死区(let要先声明后使用)
let email = '[email protected]';
if (1) {
console.log(email); //email is not defined
let email = '[email protected]';
}
//var有变量提升
console.log(y); //undefined
var y = 'yesOK';
//let不存在变量提升
console.log(x); //x is not defined
let x = 'hello';
-
let在同一个作用域中同一个变量只能声明一次,而var可以重复声明;
<script>
var uname = "孙悟空";
var uname = "八戒";
console.log(uname);
let email = "[email protected]";
// let email = "[email protected]"; //'email' has already been declared
email = "[email protected]";
console.log(email);
if (1) {
let a = 11;
let a = 110;
console.log(a); //'a' has already been declared
}
</script>
-
let定义的变量是块级作用域,var定义的变量是函数作用域、但在if、for中定义的变量是全局作用域
<script>
// let tel = 110;
//let定义的变量是块级作用域
for (let s = 0; s < 10; s++) {
let s = 99;
console.log(s);
}
// console.log(s, 998); s is not defined
for (var i = 0; i < 10; i++) {
console.log(i, 6667);
var i = 10;
}
console.log(i, 9999); //10
if (1) {
// console.log(tel, 666); //tel is not defined
let email = '[email protected]';
console.log(email, 1111);
if (3) {
console.log(email, 3333);
}
}
console.log(email); //email is not defined
//var定义的变量是函数作用域、但在if、for中定义的变量是全局作用域 :
function demo() {
var usr = "张三";
console.log(usr);
}
demo();
// console.log(usr); // usr is not defined
if (1) {
var age = 99;
}
console.log(age); //99
</script>
-
let声明的变量不会绑定到window对象上,而var声明的变量会绑定到window对象上
<script>
var a = 99;
let aa = 100;
console.log(window);
</script>
let应用
<button>1</button><button>2</button><button>3</button><button>4</button>
<script>
for (var s = 0; s < 10; s++) {
console.log(s);//0
var s = 10;
}
for (let t = 0; t < 10; t++) {
let t = 10;
console.log(t);//10次10
}
let btns = document.getElementsByTagName('button');
// for (var i = 0; i < btns.length; i++) {
for (let i = 0; i < btns.length; i++) {
btns[i].onclick = function() {
alert(i + 1);//点击按钮显示对应数字
}
}
</script>
2.2 const命令
const用来声明常量的。
什么是常量?
常量是在整个程序运行期间其值是固定不变的。
2.2.1 基础用法
<script>
// 常量的值一旦定义则在程序运行期间不能改变,但如果常量的值是数组、对象时则可以改变;
const pi = 3.14;
// pi = 3.1415; //Assignment to constant
//const pi = 3.1; //'pi' has already been declared
console.log(pi);
</script>
2.2.2 const特点:【重点】
1)、常量的值一旦定义则在程序运行期间其值不能改变,但如果常量的值是数组、对象时则可以改变;
2)、常量是块级作用域;
3)、常量没有提升(常量要先定义后使用);
<script>
// 常量的值一旦定义则在程序运行期间不能改变,但如果常量的值是数组、对象时则可以改变;
const pi = 3.14;
// pi = 3.1415; //Assignment to constant
//const pi = 3.1; //'pi' has already been declared
console.log(pi);
const stu = {
"usr": "李四",
"age": 20
};
console.log(stu);
stu.usr = '张三';
console.log(stu);
//常量是块级作用域
if (1) {
const hostName = 'www.baidu.com';
console.log(hostName);
}
// console.log(hostName); //hostName is not defined
//常量没有提升(常量要先定义后使用)
console.log(ports); //ports is not defined
const ports = 3306;
</script>
三、数据类型
3.1字符串扩展
简化字符串的拼接问题。
模板字符串语法: `` 反引号
3.1.1模板字符串的特点:【重点】
在模板字符串可以使用变量、换行、运算、调用函数;
代码案例:
<script>
let uname = "李四";
let age = 20;
// let str = "姓名:<a href='www.baidu.com'>" + uname + "</a>年龄:" + age;
let str = `姓名:<a href='www.baidu.com'>${uname}</a>
年龄:${age}
运算结果为:${age-2}
函数调用结果为:${fn()}`;
console.log(str);
function fn() {
return 'Hello WEB';
}
</script>
文章评论