ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现
var不局限作用域
let,const局限作用域,不可重复声明
接下来ES6主角登场:
我们通常用let和const来声明,let表示变量、const表示常量。let和const都是块级作用域。
说白了{}大括号内的代码块即为let 和 const的作用域。
const 声明的变量都会被认为是常量,意思就是它的值被设置完成后就不能再修改了。
还有,如果const的是一个对象,对象所包含的值是可以被修改的。抽象一点儿说,就是对象所指向的地址没有变就行。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
<script>
const student = { name: 'cc' }
// 没毛病
student.name = 'yy'
// // 如果这样子就会报错了
// //student = { name: 'yy' }
console.log(student);
//结果:输出10次10
/*var funcs = []
for (var i = 0; i < 10; i++) {
funcs.push(function() { console.log(i) })
}
funcs.forEach(function(func) {
func()
})*/
// ES5告诉我们可以利用闭包解决这个问题
/*var funcs = []
for (var i = 0; i < 10; i++) {
funcs.push(
(function(value) {
return function() {
console.log(value)
}
})(i)
)
}
funcs.forEach(function(func) {
func()
})*/
// 再来看看es6怎么处理的
const funcs = []
for (let i = 0; i < 10; i++) {
funcs.push(function() {
console.log(i)
})
}
funcs.forEach(func => func())
//es6
const name = 'happy'
console.log(`hello ${name}`)
//对于字符串ES6当然也提供了很多厉害也很有意思的方法😊 说几个常用的
console.log(name.includes('y')) //返回bool值
function action(num) {
num = num || 200
console.log(num)
//当传入num时,num为传入的值
//当没传入参数时,num即有了默认值200
return num
}
action(11)
</script>
</html>
网友评论