debugger断点调试, 按哪个键继续走?
sort排序默认是按什么排序? 从小到大怎么处理?
- 事件流 事件循环
- 宏微任务
错误处理
try{
console.log(a)
}catch(e){
console.error(e) // 不写这行,有报错也不显示了
} finally{
无论有无报错这里都会执行
switch语句的default是在上面都没有匹配的情况下,或者有匹配没有break的情况下才会执行的。
}
上面主要是为了隐藏错误, 以保证程序继续执行
下面是抛出错误,中断程序执行
throw new Error('出错了')
''.includes('') // true
for(let i of a || []){ // 如果a不存在,那么遍历空数组, 不至于报错
}
reduce是减少意思,为什么用来做求和??
严格模式
function a() {
'use strict'
console.log(this) // 1. 严格模式下, 全局作用域下的this是undfined
{
function block() { console.log('block') }
}
block() // 2. 严格模式下,代码块内的函数声明, 外面看不到, 报错
}
function b() {
console.log(this) // window
{
function block() { console.log('block') }
}
block() // block
}
a()
b()
对象使用push方法
var obj = {
'2': 3,
'3': 4,
'length': 2,
'splice': Array.prototype.splice,
'push': Array.prototype.push
}
obj.push(1)
obj.push(2)
obj.push(999)
console.log(obj)
// 不知道有啥应用场景!!!
== 的隐式转换
0 ‘’ “” null undefinde NaN false
- 一边是boolean, 转number进行比较
- 一边是字符串, 同上
- 对象的话转原始值 (valueOf() toString() TypeError).
[0] == true // false '0' == true 0 == 1
[1] == true // true
非匿名立即执行函数, 函数变量只读
var a = 1;
(function a() {
a = 2;
console.log(a); // a函数
})()
对象的不同类型的属性
对象的键是字符串形式的, 如果不是它会自己转.
let obj = {}; obj.a = 1; // obj['a'] = 2;
obj[1] // obj['1']
obj[{}] = 1; // { [object Object]: 1 }
obj[true] //
this
谁调用指向谁. 箭头函数指向父级作用域(如果还是箭头, 继续找外层)
var length = 1;
function foo() {
console.log(this.length)
}
var arr2 = [foo, 2, 3];
arr2.foo()
var fn = arr[0];
fn()