JavaScript语言精粹_糟粕
全局变量
JavaScript没有连接器(linker),所有的编译单元都载入一个公用的全局对象中。
一共有3种方式定义全局变量。
1. var foo = value;
2. window.foo = value;
3. foo = value;
这本来是为方便初学者而有意让变量在使用前无需声明,但忘记声明变量是一个非常普遍的错误,而JavaScript的策略是让那些忘记预先声明的变量成为全局变量,这导致查找bug非常困难。
作用域
JavaScript的语法来源于C,在大多数语言中,一般来说声明变量的最好的地方是在第一次用到它的地方。但JavaScript中没有块级作用域,所以更好的方式是在每个函数的开头部分声明所有变量。
自动插入分号
JavaScript有一个机制,它通过自动插入分号来修正有缺陷的程序,千万不要依靠它,它可能会掩盖更为严重的错误
比如:
1 2 3 4 | return { status: true }; |
1 2 3 | return { status: true }; |
返回的是两种不同的结果,第一个:自动分号让它变成了undefined。第二个返回一个包含status成员元素的对象。
保留字
许多单纯被JavaScript保留,它们不能被用来命名变量或参数,当保留字被用作字面量的键值时,他们必须被引号括起来,它们不能被用在点表示法中,所以又是必须使用括号表示法。
Unicode
当设计JavaScript的时候,Unicode预计最多会有65536个字符,而从那以后它的容量慢慢增长到了拥有1百万个字符。
typeof
typeof运算符返回一个用于识别运算数类型的字符串。但是它无法区分数组和对象。
parseInt
它是一个将字符串转换为整数的函数,它在遇到非数字是会停止解析,所以parseInt("16")与parseInt("16 tons")产生相同的结果。
浮点数
二进制的浮点书不能正确地处理十进制的小数,因此0.1+0.2不等于0.3.这是JavaScript中最经常被报告的bug,而且它是遵循二进制浮点数算数标准(IEEE 754)而有意导致的结果。
但浮点数中的整数运算是精确的,所以小数表现出来的错误可以通过制定精度来避免。
NaN
它是IEEE 754中定义的一个特殊的数量值,它表示不是一个数字,尽管typeof NaN === ‘number’ //true.
该值可能会在试图将非数字形式的字符串转换为数字是产生。
伪数组
JavaScript中没有真正的数组,在JavaScript的数组中,不必给他们设置纬度,而且它们永远不会产生越界错误。
假值
0、NaN、‘’(空字符串)、false、null、undefined
hasOwnProperty
hasOwnProperty是一个方法,而不是一个运算符,所以在任何对象中,它可能会被一个不同的函数甚至一个非函数的值所替换。
对象
JavaScript的对象中没有真的空对象,他们可以从原型链中取得成员元素。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥