2. Var не имеет области видимости на уровне блока, но имеет let (область видимости на уровне блока включает {} условные циклы и т. Д.)
3. Для let отсутствует продвижение переменной (var имеет, то есть перед его использованием он найдет объявление переменной в коде, независимо от позиции)
4. Не влияет на цепочку работ
<script>
{
let name="paopao";
function say(){
console.log(name);
}
say();
}
</script>
5. Пример: переключение цветов.
<script>
let items = document.getElementsByClassName('item');
for (var i = 0; i < items.length; i++) {
items[i].onclick = function () {
this.style.background = 'pink';
}//用this不要紧,但是发现用items[i]会报错,因为var是全局的,但是用let就可以
for (let i = 0; i < items.length; i++) {
items[i].onclick = function () {
items[i].style.background = 'pink';
}
}
</script>
const
1. Некоторые примечания:
Обязательно назначьте начальные значения при определении констант
Область действия блока
Элементы массива и объекта не изменяются, а изменения констант не сообщаются ( 即数组本身和数组内容的改变,内容可以变,常量指向地址不能变)
<script>
let str = `泡泡
果果
`;
console.log(str);//可以换行,''和""就不行
</script>
$ {имя переменной}
<script>
let love="果果";
let obj=`${love}和泡泡`;
console.log(obj);
</script>
Упростить объекты
Переменные-члены и функции-члены могут быть написаны напрямую, и метод может опускать ключевое слово функции
<script>
let name="红";
let play=function(){
console.log("吹泡泡");
}
const Guo={
name,
play,//直接放变量名
eat(){
console.log("吃绿绿");
}//省略function
}
</script>
Функция стрелки
Меры предосторожности:
1. Не может использоваться в качестве конструктора для создания экземпляров объектов, только конструктор.
2. Переменная arguments не может использоваться
3. Если есть только один формальный параметр, середину () можно опустить.
4. Если в теле кода есть только один оператор, опустите {} (оператор return также опускается в это время, и результатом выполнения является возвращаемое значение)
let fn=(a,b)=>{
return a+b;
}
//this是静态的始终指向函数声明时的作用域下的this的值
<script>
function getName1() {
console.log(this.name);
}
let getName2 = () => {
console.log(this.name);
}
window.name = "泡泡";
const school = {
name: "果果"
}
getName1.call(school); //call方法可以改变this的值,指向school
getName2.call(school); //输出果果、泡泡,箭头函数依然指向的是全局对象,只能指向函数在声明时所在作用域
let fun = () => {
console.log(arguments);
}
fun(1, 2, 3, 4);//报错argumrnts未定义
</script>
//省略()
let add=n=>{
return n+n;
}
console.log(add(8));
//省略{}
let pow=n=>n*n;
console.log(pow(8));