Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1月份第3周 #1

Open
kangkang123269 opened this issue Jan 19, 2024 · 0 comments
Open

1月份第3周 #1

kangkang123269 opened this issue Jan 19, 2024 · 0 comments

Comments

@kangkang123269
Copy link
Owner

kangkang123269 commented Jan 19, 2024

JSON序列化注意事项

  1. 数组里有undefined,函数,symbol都会转成null,对象值undefined,函数,symbol忽略
  2. Date对象和正则对象转出字符串
  3. 报错:bigint类型和循环引用
  4. Infinity和NaN非标准属性转null
  5. 类数组类型,只会序列化可枚举属性,不会序列化原型链的属性或不可枚举属性

什么是作用域

作用域简单来说是一套规则,给编译器和引擎进行变量查找是运行用的。作用域一般来说有全局作用域(全局对象)和局部作用域(函数)局部的分阶段函数内部大括号包围if for等语法执行的阶段)。

阶段历程es3之前只有函数作用域,es3es5出现了块作用域但是只出现在try{}catch{}的catch中,但是存在if for循环及代码块中var变量定义的变量能在外部访问的问题,所以在es6letconst定义的变量在代码块中有块级作用域。项目中es6语法代码往前编译兼容浏览器es5语法,如果再往前转比如es3前就会看到let转var的时候比如if块就被转为try{}catch{}

更详细说发mqyqingfeng/Blog#6

为什么undefined== null 为true,与空字符串对比为false

JavaScript为了简化a !=null || a != undefined这种写法,没有值检测

一道代码题引发的思考

let a = { obj : 1}
a.child = a = 1

代码从右往左复制先是a = 1最后a.child = 1
如下图1.child不报错,为undefined,可以访问Number原型链的属性
c381b4fefd20459e33d5d002dacfd80

结论:在严格模式下给数字挂属性赋值报错,在宽松模式下给数字挂属性赋值不处理,给数字挂一个不存在的属性访问值为undefined,因为会访问Number.prototype

为什么在react自定义严格模式不报错
解:react为了程序性能最优(页面不崩变空白),把自定义的严格模式给去除了

垃圾回收机制(待补充)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant