parseInt
parseInt是将字符串转换为整数的函数,这个函数有个基模式参数,该参数默认是10,即以将字符串转换为十进制的整数。当字符串以0开头时,JavaScript会八进制方式求值。
PLAIN TEXT
JAVASCRIPT:
var s = '08';
parseInt(s); //0
parseInt(s, 10); //8
上面的代码中,第二行是忽略了基模式参数,当遇上字符串08时,JavaScript会用八进制方式来求值,而8在八进制中不是一个有效数字,所以求值结果是0。第三行是为parseInt指定了基模式是10,所以按着十进制方式求值后,结果为8,该结果正确。所以在使用parseInt时带上基模式参数是一个好习惯。
typeof
typeof是返回一个用来表示表达式的数据类型的字符串。下面几种情况返回的类型值是错误的:
PLAIN TEXT
JAVASCRIPT:
typeof null; //object, not null
上面的代码中,检查null的类型返回object,而并非null。
PLAIN TEXT
JAVASCRIPT:
var a = new String('Hello');
typeof a; //object, not string
上面的代码中,检查字符串Hello的类型返回object,而并非string。对于Boolean、Number等简单数据类型也存在同样的错误。解决方法是封装自己的类型检查函数:
function isString(object) {
return Object.prototype.toString.call(object) == "[object String]";
}
var a = new String('Hello');
isString(a); //true
NaN
表示算术表达式返回非数字值的特殊值。NaN 不与任何值相等,包括其本身。
PLAIN TEXT
JAVASCRIPT:
NaN === NaN; //false
typeof NaN; //number
isNaN(NaN); //true
上面的代码中,第一行验证了NaN不与任何值相等。第二行与第三行有点矛盾,第二行显示NaN的类型为number,第三行却实现NaN不是一个数字类型的值,因此还是封装一个数字类型的检查函数保险。
function isNumber(object) {
return Object.prototype.toString.call(object) == "[object Number]";
}
隐形Boolean转换
在流程控制的条件中,如果条件变量不是布尔类型值,JavaScript会对条件变量做隐性:'',NaN,null,undefined,0这几个转换为false,其他值都转换为true。特别需要注意的是,只有空字符串转换为false,其他非空字符串都会转换为true,这里尤其要小心的是'0',它也被认为是true(因为它非空嘛)。
比较大小
编程时经常会在条件判断中比较两个数值的大小,当被比较的两个变量都是数值类型时,不会产生问题,假如双方为字符串类型时,比较就可能产生问题了。
PLAIN TEXT
JAVASCRIPT:
'10'>'2' //false
上面的代码返回false,原因比较两个字符串是根据字符本身的ASCII码的大小,从左往右进行比较。'1'的ASCII码是49,'2'的ASCII码是50,所以'10'小于'2'。为了避免字符串比较带来的问题,比较前最好确保所比较的变量都是数值类型(至少保证一方为数值,在比较时会先将另一方隐性转换为数值类型,再做比较)。
相关推荐
JavaScript陷阱太多,因此我们得步步为营,下面这些点,相信很多同学都会遇到,希望朋友们多注意下。JavaScript陷阱太多,因此我们得步步为营,下面是一些常见的影响性能的陷阱。
javascript 陷阱 javascript 陷阱
Javascript中的陷阱大集合【译】 总结了Javascript的各种陷阱,很棒
本书是一本全面、深入介绍JavaScript语言的学习指南。本书共分四个部分,第1部分帮助读者快速入手,掌握基本的JavaScript编程要点;第2部分介绍JavaScript的发展和技术背景;第3部分深入探索JavaScript,介绍了语法...
来自 Nine Javascript Gotchas , 以下是JavaScript容易犯错的九个陷阱。虽然不是什么很高深的技术问题,但注意一下,会使您的编程轻松些,即所谓make life easier. 笔者对某些陷阱会混杂一些评点。
javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档
由于其语法让人联想到Java,并且具有许多脚本语言的共同特性(如函数、数组、字典和正则表达式),因此,具有少量编程经验的人也能够快速学习JavaScript。新手程序员几乎不需要培训就可以开始编写程序,这要归功于...
2.5 在C++中“声明”“Javascript类”, 供Javascript实例化 2.6 封装完整的C++类到Javascript中,供Javascript实例化 三、Google v8的开源应用 3.1 Node.js 3.2 v8cgi 四、参考资料 五、本文源码
主要为大家详细介绍了一道极易被忽视的javascript面试题七问七答,感兴趣的小伙伴们可以参考一下
Douglas Crockford 在本书中剥开了JavaScript 沾污的外衣,抽离出一个具有更好可靠性、可读性和可维护性的JavaScript 子集,让你看到一门优雅的、轻量级的和非常富有表现力的语言。作者从语法、对象、函数、继承、...
JavaScript手册 JavaScript手册 JavaScript手册
帮助避免错误的Javascript陷阱清单(Javascript Gotchas listed to help avoid mistakes)
因为 JavaScript 是分成几层按级实现的,它的文档就要分成好几本书以便适应不同人的需要。在线 JavaScript 参考的完美组合包括: JavaScript 指南提供了关于核心 JavaScript 语言及客户端对象的信息。 编写...
《JavaScript权威指南(第6版)》主要讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScript API。本书第6版涵盖了HTML5和ECMAScript 5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增...
《编写可维护的JavaScript》向开发人员阐述了如何在团队开发中编写具备...《编写可维护的JavaScript》适合前端开发工程师、JavaScript程序员和学习JavaScript编程的读者阅读,也适合开发团队负责人、项目负责人阅读。
深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 深入理解JavaScript系列(2):揭秘命名函数表达式 深入理解JavaScript系列(3):全面解析Module模式 深入理解JavaScript系列(4):立即调用...
javascript混淆,javascript压缩,javascript加密
《JavaScript征途》是一本学习JavaScript语言的权威书籍,在遵循语言学习的特殊规律基础上精心选材,力争做到统筹、有序,在结构上体现系统性和完整性。同时还重点挖掘JavaScript基于对象的开发精髓及函数式编程两个...
纯javascript网页版二人对战象棋,直接点击运行即可
一个超级简单的编译器的例子,包含了现代编译器的几个主要部分,用简单易读的 JavaScript 编写