# 序言

最近搭建网站,发现 JS 有很多有意思的特性,既能直接在浏览器控制台调试,又能做服务器后端,语法也非常奇怪。之前的 HackerGameCTF 题目里也有很多涉及到 JS 相关,干脆就正式学习一下。

本着互联网开放共享的精神,实在没有必要单独整理,耗时又费力,而且重复性劳动没有任何意义。好的学习笔记应该是在已有工作的基础上摘选出有趣的点,从更高的角度去思考特性。

# 学习资料

  • 网道 JavaScript 教程 - ES5
  • 网道 JavaScript 教程 - ES6

# 有趣的点

  • 1 === 1.0, Nan !== NaN
  • 1<<31 = -2147483648 == 2 <<30, 但 (1<<32 = 1) != (2<<31 = 0) != (2<<32 = 2)
  • 空对象 {} 和空数组 [] 都会被自动转换为 true
  • 虽然 0 == ‘0’,0 == true ,但’0’ != true, ‘0’ !== true,但’0’在逻辑判断视为 true
  • typeof null === ‘object’
  • 小数点前的数字多余 21 位,或者小数点后紧跟多于 5 个 0,则转化成科学计数法
  • parseInt () 参数如果不是字符串,会先转为字符串。如果是可以用科学计数法表示的数字,会把科学计数法视作字符串,然后按字符串转 int 的方法
  • parseInt () 指定进制,0,null,undefined 被忽略,[2,36] 视作有效,其他返回 NaN。转换时从高位开始一直解析到可行的数值;高位不可行则返回 NaN
  • delete 关键字用于删除对象的属性。如果被删除的属性不存在,返回 true,如果目标属性存在且不可删除,返回 false
  • delete 只能删除对象本身的属性,不能删除它继承的属性
  • 基本运算符中只有’+' 会进行重载,从左至右进行算术加或者字符串相连。对于对象的加法,先调用 valueOf,如果没有得到基本类型,再调用 toString。一个特例:对于 Date 对象,直接调用 toString
  • 对于’%' 模运算,运算结果的正负号和第一个运算子相同
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

c01dkit 微信支付

微信支付

c01dkit 支付宝

支付宝

c01dkit qqpay

qqpay