一 var、let和const区别
1.let和const不存在变量提升
console.log(c); //undefined var c='hello'; console.log(d); //报错 let d='world';
2.let 和const 在同一个作用域下不能重复定义同一个名称
var d=1; var d=100; console.log(d); //100
let f=1; let f=100; //若直接去掉let这个类型定义 ,直接f=100;是可以的,这个变量值可以改变 console.log(f); //报错
3.有着严格的作用域 var函数作用域 let和const块级作用域
function fun(){ var n=10; if(true){ var n=100; } console.log(n); } fun(); //100 function fun(){ let m=10; if(true){ let m=100; } console.log(m); //此时的两个m作用域范围不一致,不报错 } fun(); //10
注明:const 声明一个只读的常量,一旦声明,常量的值就不能改变
const w=100; w=200; //报错 const r; //报错, 一定初始化,不能只声明不赋值
const obj ={};
obj.name = 'anna';
console.log(obj)//不报错,因为数组和对象是引用对象,它定义的是内存的地址
const arr=[];
arr.push(1) //不报错,因为数组和对象是引用对象,它定义的是内存的地址
let f = v=>v; //变量名 = 参数 => 返回值(函数体) 参数为空或个数为两个及两个以上则应()括住参数 var f=function(v){ return v; }
let f2 = (n1,n2) => n1+n2;
三、数据结构 Set Map
set 类似于数组 成员是唯一的
map 类似于对象
const s=new Set();
s.add(1).add(2).add(3).add(2);
console.log(s) //Set(3) {1,2,3}
//面试常见题 数组去重处理
var arr2 = [2,2,3,1,4,4,2,2,6];
var arr3 = [...new Set(arr2)]; //把数组转成set类型,自动去重,之后再加[...]扩展运算符又转成数组类型
const m = new Map();
m.set('name','anna').set('age',18);
for(let [key,value] of m){
//可以用for循环取值
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。