Symbol这一节没看懂- 以后再抽时间看吧- 感觉没啥卵用呀
Boolean('') // false
&& 按照短路逻辑去解释
- 如果第一个操作数是对象,则返回第二个操作数。
- 如果第二个操作数是对象,则只有第一个操作数求值为 true 才会返回该对象。
- 如果两个操作数都是对象,则返回第二个操作数。
- 如果有一个操作数是 null,则返回 null。
- 如果有一个操作数是 NaN,则返回 NaN。
- 如果有一个操作数是 undefined,则返回 undefined。
||
- 如果第一个操作数是对象,则返回第一个操作数。
- 如果第一个操作数求值为 false,则返回第二个操作数。
- 如果两个操作数都是对象,则返回第一个操作数。
- 如果两个操作数都是 null,则返回 null。
- 如果两个操作数都是 NaN,则返回 NaN。
- 如果两个操作数都是 undefined,则返回 undefined。
同样与逻辑与类似,逻辑或操作符也具有短路的特性。只不过对逻辑或而言,第一个操作数求值为
* /
-
如果是 Infinity 乘以 0,则返回 NaN,
-
如果有任一操作数是 NaN,则返回 NaN。
-
如果是 Infinity 乘以 Infinity,则返回 Infinity。
-
如果是 Infinity 除以 Infinity,则返回 NaN。
-
如果是 0 除以 0,则返回 NaN。
-
如果是非 0 的有限值除以 0,则根据第一个操作数的符号返回 Infinity 或-Infinity。
% 取模操作
- 如果被除数是无限值,除数是有限值,则返回 NaN。
- 如果被除数是有限值,除数是 0,则返回 NaN。
- 如果是 Infinity 除以 Infinity,则返回 NaN。
- 如果被除数是有限值,除数是无限值,则返回被除数。
- 如果被除数是 0,除数不是 0,则返回 0。
指数操作符 Math.pow(2.3) == 3**2
let sum = 3
num **= 2 // num == 9
+
- 如果有任一操作数是 NaN,则返回 NaN;
- 如果是 Infinity 加 Infinity,则返回 Infinity;
- 如果是-Infinity 加-Infinity,则返回-Infinity;
- 如果是 Infinity 加-Infinity,则返回 NaN;
- 如果是+0 加+0,则返回+0;
- 如果是-0 加+0,则返回+0;
- 如果是-0 加-0,则返回-0。
in of
for (const key in {a: 1, b: 2}) {
console.log(key);
}
// a, b
for (const value of [1,2,3,4,5]) {
console.log(value);
}
// 1, 2, 3, 4, 5
基本类型共有6种
- Undefined
- Null
- Boolean
- Number
- String
- Symbol
所有函数的参数都是按值传递的,ECMAScript 中函数的参数就是局部变量。
<script>
function f(obj) {
obj.name = 'mk'
debugger
obj = new Object()
obj.name = 'yp'
}
let obj = {
}
f(obj)
console.log(obj)
</script>
typeof
- ECMA-262 规定,任何实现内部[[Call]]方法的对象都应该在typeof 检测时返回"function"。
- 因为上述浏览器中的正则表达式实现了这个方法,所 以 typeof 对正则表达式也返回"function"。
- 在 IE 和 Firefox 中,typeof 对正则表达式 返回"object"。
RegExp 正则表达式 再单独看吧
Math.max(1,2,3,0)
Math.max(...[1,2,3,0])
- Math.ceil()方法始终向上舍入为最接近的整数。
- Math.floor()方法始终向下舍入为最接近的整数。
- Math.round()方法执行四舍五入。
- Math.fround()方法返回数值最接近的单精度(32 位)浮点值表示。
- Math.random()方法返回一个 0~1 范围内的随机数,其中包含 0 但不包含 1。
Math.floor(Math.random() * 10 + 1);
array
Array.from()的第一个参数是一个类数组对象,即任何可迭代的结构,或者有一个 length 属性 和可索引元素的结构
检测数组 Array.isArray(arr) // true
- 迭代器
- arr.keys()
- arr.values()
- arr.entries()
- fill() arr.fill(2) 啊,原来面试想问这个呀
- join(',')
- 栈 push() pop()
- 队列 push() shift()
- concat()
- slice(1,2) 2是结束位置,并不改变原数组的值
- splice(1,2) 2是长度 返回值是删除的元素数组,还可以用作替换和添加
- 搜索
- indexOf()
- lastIndexOf()
- includes()
- find()
- findIndex()
- every()
- filter()
- forEach()
- map()
- some()
- reduce()
定型数组 啥玩意 用不到吧
字符串
- slice()
- substring()
- substr()
let stringValue = "hello world";
console.log(stringValue.slice(3)); // "lo world"
console.log(stringValue.substring(3)); // "lo world"
console.log(stringValue.substr(3)); // "lo world"
console.log(stringValue.slice(3, 7)); // "lo w"
console.log(stringValue.substring(3,7)); // "lo w"
console.log(stringValue.substr(3, 7)); // "lo worl"
- startsWith("foo") 以...开头
- endsWith("baz") 以...结尾
- includes()
- trim() 去掉前后所有空格
- ...'abc'
- toLowerCase()、toLocaleLowerCase()、toUpperCase()和toLocaleUpperCase()。
混入 minxin
Object.assign(dest,src) ...
Object.is()
解构赋值
let { name: personName, age: personAge } = person;
let { name, age } = person;
定义函数的三种方式
- 函数表达式
function Person(){}
- 函数声明
let Person = function(){}