for-in for-of
for in 遍历数组和对象 并且会把原型自定义属性都会遍历出来 。所以遍历的时候都会加上hasOwnProperty 表示只会遍历自身对象或者数组的属性
for of 只会遍历自身的属性 自动过滤原型自定义的属性 对象没有for of方法,可以迭代的对象都可以用for-of array set map string...
const arr = [10, 20, 30, 40, 50]; const obj = { name: "zs", age: 10, gender: "male" }; Array.prototype.AA = 1; Object.prototype.BB = 2; for (let key in arr) { if (!arr.hasOwnProperty(key)) break; console.log(key, arr[key]); } //for in 遍历数组和对象 并且会把原型自定义属性都会遍历出来 。所以遍历的时候都会加上hasOwnProperty 表示只会遍历自身对象或者数组的属性 for (let key in obj) { if (!obj.hasOwnProperty(key)) break; console.log(key, obj[key]); } //for of 只会遍历自身的属性 自动过滤原型自定义的属性 对象没有for of方法,可以迭代的对象都可以用for-of array for (let item of arr) { console.log(item); } //string for-of let str = "abcdef"; for (let item of str) { console.log(item); } //map for-of const map = new Map() .set(1, 100) .set("abc", 200) .set(true, 300); for (let [key, value] of map) { console.log(key, value); } //对象不可以遍历 // for (let item of obj) { // console.log(item); // }
函数默认值
传入undefined或者不传该参数,将触发该参数等于默认值
function fn(x=1,y=2){ console.log(x,y); } //传入undefined或者不传该参数,将触发该参数等于默认值 fn(undefined,null)//1 ,null fn(1) // 1 2 fn(1,false) //1 false