0、导言

JavaScript中有许多难以避免的问题特性。接下来就一一揭示。

1、全局变量

在所有JavaScript的糟糕特性中,最为糟糕的就是全局变量的依赖。全局变量使得在同一个程序中运行独立的子程序变得更难。

2、作用域

JavaScript是类C的语法,但是却没有提供类C的块级作用域。

3、自动插入分号

JavaScript有一个自动修复机制,会试图通过自动插入分号来修正有缺损的程序,但是它有可能掩盖更为严重的错误。

4、保留字

有太多的单词在JavaScript中被保留,它们不能用来命名变量或者函数(在大部分执行环境下,部分关键字是可用的)。

5、Unicode字符

JavaScript设计之初,Unicode预计只会有65536个字符。实际上,到现在Unicode有多大百万个字符。这也就导致了JavaScript会认为一对字符是两个不同的字符(Unicode把一对字符视为一个单一的字符)

6、typeof

不要指望typeof返回的类型。比如null或者是检测对象,另外检测正则可能会返回function或者是object。

7、parseInt

parseInt把一个字符串转换为整数,会在遇到非数字时停止解析。另外如果第一个字符是0,还会按照8进制来取值。

8、运算符(+)

+运算符可以用于加法运算或者是字符串连接,究竟如何执行会取决于其参数类型。

9、 浮点数

二进制浮点数不能正确的处理十进制小数,因此0.1+0.2 不等于0.3。

10、NaN

NaN是一个特殊的数量值,它表示不是一个数字。也是唯一一个不等于自身的JavaScript数值。

11、伪数组

JavaScript没有真正的数组,就连Array也是通过object来模拟的,如果完全达不到真正的数组的地步。同时typeof运算符也不能辨别数组和对象。

12、假值

JavaScript中包含诸多的假值,如: 0, NaN, '', false, null, undefined

13、hasOwnProperty

hasOwnProperty方法被用做一个过滤器来避开for..in语句的隐患,但hasOwnProperty是一个普通的方法,所以是可以被重写的。

14、对象

JavaScript的对象,永远不会是真的空对象,因为可以从原形链取得成员属性。

转载于:https://www.cnblogs.com/humin/p/5036374.html

JavaScript之毒瘤相关推荐

  1. 经典面试题(5):小心javascript自动插入分号机制

    在<JavaScript语言精粹>这本书里,这个"自动插入分号"机制被划入到了JavaScript的毒瘤里面,与之并列的前面的全局变量. 有些时候,不合时宜地插入分号, ...

  2. JavaScript语言精粹-毒瘤、糟粕(应对)

    毒瘤 不使用全局变量 使用块级作用域,不var return与返回值要位于同一行,否则当自动插入分号后会返回undefined 当对象的属性名与js保留字相同时,无法使用点语法,使用括号表示法 js字 ...

  3. javascript语言精粹 微盘_JavaScript语言精粹(修订版)pdf

    摘要 "学习.理解.实践大师的思想,我们才有可能站在巨人的肩上,才有机会赶超大师,这本书就是开始." "这是一本介绍JavaScript语言本质的重要书籍,值得任何正在或 ...

  4. JavaScript的1000+篇文章总结

    JavaScript的1000+篇文章总结 本文收集和总结了有关JavaScript的1000+篇文章,由于篇幅有限只能总结近期的内容,想了解更多内容可以访问:http://www.ai2news.c ...

  5. ThoughtWorks技术顾问说低代码是“行业毒瘤”,你怎么看?

    使用低代码平台写出来的代码既难以维护,又难以测试,同时它还给行业传递了非常不好的信号,"程序员的价值是不值钱的",最终造成的结果就是一些不具备编程专业技能的人,使用极不趁手.效率低 ...

  6. 【AJAX】JavaScript的面向对象

    Ajax中后端数据返回后需要前端通过JavaScript来实现动态数据更新的问题.所以,在Ajax中加深了一遍JavaScript面向对象的印象. 基础部分: JavaScript中创建对象并简单对象 ...

  7. 【JavaScript总结】JavaScript语法基础:JS高级语法

    作用域链: 1.JS中只有函数能够限定作用域的范围: 2.变量处理在制定的函数范围内,还有一个特殊的作用域,就是没有用var 声明的全局作用域 3.js中的作用域链是为了清晰的表示出所有变量的作用范围 ...

  8. 【JavaScript总结】JavaScript语法基础:DOM

    ->DOM的理解:文档对应dom树 ->有了DOM能做什么:DOM的操作 html文档做为DOM树模型,DOM树的节点就是对象.对象会触发事件来执行一些事件代码. C#中的事件是一个委托变 ...

  9. 【JavaScript总结】JavaScript语法基础:JS编码

    运算符 数学:+. -. *. / 逻辑:>. < .>= .<=. == . !=.&&.|| . === .!==(完全等于) 对象相关 new delet ...

  10. 【JavaScript总结】JavaScript语法基础:数据类型

    ------>数据类型有哪些? ->基本类型:数字类型,布尔类型,字符串类型 ->引用类型:对象类型,函数类型 ->空类型:null 和 undefined ->运算符: ...

最新文章

  1. 网络框架 - 收藏集 - 掘金
  2. AI人才报告 | AI稳超互联网平均薪资,哪些细分领域最受追捧?
  3. JZOJ 5440. 【NOIP2017提高A组冲刺11.1】背包
  4. java 写文件时,输入换行字符.
  5. 名副其实!华为天才少年身份曝光!
  6. 除了国内红海拼刀,移动 App 在海外能否挖到新机会?
  7. Sql Server 事务日志(二)
  8. Ros学习笔记(二)创建功能包
  9. GET data:image/jpg;base64,35,37,....... net::ERR_INVALID_URL
  10. 入侵修改服务器内容,怎么入侵服务器修改数据库
  11. 微波放大器和混频器的测试
  12. openlayers4加载百度地图、百度影像图、谷歌地图、谷歌影像图
  13. PPP / PPPoE
  14. 机器学习偏见可能会定义少数族裔的健康状况
  15. 8_future_threading_multiprocessing的封装(线程进程的高级api)
  16. 嵌入式系统考试题库(CSU)
  17. Android百度地图屏蔽油站,怎么用android百度地图api获取离当前位置最近的加油站...
  18. Wi-Fi 6关键技术及产业进展
  19. css实现简单的头像遮罩效果
  20. CSDN发表文章后待审核的原因

热门文章

  1. 揭开docker的神秘面纱?镜像制作
  2. MobaXterm SSH 保持连接
  3. 第四章 软件总体设计
  4. 24段魔尺拼图指南_拼图项目动手指南
  5. 【图片新闻】美海军的下一艘战舰与“祖姆沃尔特”DDG-1000极其相似
  6. GPT生成情人节表白情话,AI撩骚情人卡很搞笑!
  7. Tomcat+Apache动静分离
  8. 09SpringBoot web 错误处理
  9. vue登录模板1-科技透明登录框与登录页
  10. 要怎样努力,才能成为很厉害的人?!