- 1.const定义的代表常量,只能赋值一次;
- 2.js中用const定义的对象的属性可以修改,但是对象的引用不能修改;
const obj = {name: "wanglu"};
obj.name = "can update";
//不能够修改对象的引用,可以修改对象的值;如果上面是let修饰的,可以修改引用;
// obj = {name: "can not update"};
- 3.为了防止修改对象的属性,可以冻结对象;
const obj = Object.freeze({name:"jack"});
obj.name = "tom";
console.log(obj.name);//jack
- 4.数组的解构赋值--必须按顺序解出相应的值;
const [a,b] = ["wanglu",70];
console.log(a);//wanglu
console.log(a[0],a[1]);//w a
console.log(b);//70
- 5.对象的解构赋值;可以是乱序,但是名称必须对应;
const {age,name} = {name:"wanglu",age:18,height:175};
console.log(name);//wanglu
console.log(age);//18
console.log(name[0]);//w
console.log(name[1]);//a
- 6.箭头函数返回值注意:如果使用大括号并且有返回值,必须带上return--不管是不是最后一行;如果没有大括号,且就一个表达式,不能使用return;
let result = n =>++n;
//注意:如果加上{} 想要有返回值,必须使用return,这一点和kotlin
//不一致,kotlin默认最后一行为返回值;
let result = n =>{return ++n};
console.log(result(5));
- 7.箭头函数返回一个对象的方式;必须用一个()括起来;
//箭头函数返回一个对象的实现方式
//返回的对象,必须用()括起来
let obj = n =>({id:n,name:"wnaglu"});
console.log(obj(666));
- 8.关于==与===(恒等于)的区别;
/==(等于)与===(恒等于)的区别
//==(等于)
//1.如果两个值类型相同,进行===比较;
//2.如果两个值类型不同,它们可能相等。根据下面规则进行类型转换后再比较:
//a.如果一个是null,一个是undefine,那么它们比较相等;
//b.如果一个是字符串,一个是数值,把字符串转换成数值再进行比较;
//c.如果任一值是true,把它装换成1再比较;如果任一个值是false,把它转换成0再比较;
//d.如果是一个是对象,另一个是数值或者字符串,把对象转换成基础类型,利用他的toString或者
// valueOf方法。js核心内置类,会尝试valueOf优先于toString;例外的是Date,Date利用
// 的是toString转换的;
//=== 恒等于
//1.如果类型不同,就不相等;
//2.如果两个都是数值,并且是同一个值,那么相等;(!例外)的是,如果其中至少一个是NaN,那么不相等。
// 判断一个是是否是NaN,只能用isNaN()来判断;
//3.如果两个都是字符串,每个位置的字符都一样,那么相等;否则不相等;
//4.如果两个值都是true,或者都是false,就相等;
//5.如果两个值都引用同一个对象或者函数,那么相等;
//6.如果两个值都是null,或者都是undefine,那么相等;
console.log(null==undefined);//true
console.log(true==1);//true
console.log(false==0);//true
console.log("1"==1);//true
console.log(true===1);//false
console.log(NaN===NaN)//false
- 9.判断构造函数的调用方式;
//根据new.target是否返回undefine来判断构造函数是怎么调用的;
function Person(name){
console.log('new target---->'+new.target);
if(new.target !== undefined){
this.name = name
}else{
throw new Error("必须使用new生成实例");
}
}
function Person1(name){
if(new.target === Person1){
this.name = name ;
}else{
throw new Error("必须使用new生成实例");
}
}
let p1 = new Person1("wanglu");
//let p2 = Person(null,'zhangsan');
- 10.迭代器
let arrayList = ['a','b','c'];
//for ... of... 遍历
for(let item of arrayList){
console.log(item);
}
//将array转换为iterator,利用next来遍历里面的元素
let itemArray = arrayList[Symbol.iterator]();
console.log(itemArray.next());//Object { value: "a", done: false }
- 11.将js对象转换为json String串
JSON.stringify(obj)
网友评论