前端-知识点-大杂烩

文章探讨了JavaScript中的debugger断点调试,提到在遇到断点后通常按F5键继续执行。默认排序通常是升序,若需从小到大排序则无需额外操作。讲解了事件流的宏任务和微任务,以及try-catch-finally错误处理结构。还讨论了严格模式下this的变化,对象的方法如push和属性行为,以及等号比较时的隐式转换规则。此外,文章还涉及了函数作用域和this的指向问题。
摘要由CSDN通过智能技术生成

debugger断点调试, 按哪个键继续走?
sort排序默认是按什么排序? 从小到大怎么处理?

  1. 事件流 事件循环
  2. 宏微任务

错误处理

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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值