例如,typeof 1.2输出结果为number,表示1.2是数字类型。在实际应用中,typeof常常用于检测参数的数据类型,如下表所示。typeof null返回值是object,这是早期JavaScript设计时遗留下的问题,即使到现在也无法通过typeof判断null类型。利用typeof可以避免使用未定义的变量导致程序执行出错。图3.2.7使用typeof获取数据类型关键字typeof在两种情况下会返回undefined:变量不存在和变量的值未定义。......
2023-11-08
JavaScript支持比较两个类型不一致的操作数。当两个操作数类型不一致,要判断两者是否相等时,需要按照以下规则对数字、字符串、布尔值、对象、null、undefined进行转换之后再判断:
1.null与除了undefined之外的任意值均不相等(!=),undefined与除了null之外的任意值均不相等。
2.null===null为true,与其他值进行全等比较均为false。
3.undefined===undefined为true,与其他值进行全等比较均为false。
4.非数字NaN与任意值均不相等(!=),NaN不等于NaN为true,NaN参与比较运算的结果均为false。
5.比较数字和字符串时,字符串会转换为数值再进行比较,比如'1'==1 为true,'1.00'==1 也为true。
6.比较布尔值和非布尔值时,将true转换为1,false转换为0,再应用其他规则。比如,true=='1.00' 先将true转换为1、'1.00'转换为1再进行比较,因此为true;false=='000' 将false转换为0、'000'转换为0再进行比较,因此也为true。
7.比较对象与数字、字符串时,尝试用该对象的原始值(Primitive Value)进行比较,即尝试调用对象的valueOf()和toString()获取原始值,再进行比较。
8.比较两个对象时,仅比较两个操作数的引用是否相同。
NaN是JavaScript的一个特殊数值常量,表示非数字;typeof NaN返回“number”。
此处的对象包括数组、函数和其他内置、自定义对象。
4.3.2.html对数字、字符串、布尔值进行比较,如下所示。
动手写4.3.2
执行4.3.2.html,输出比较结果到网页,如下图所示。(www.chuimin.cn)
图4.3.2 类型转换
比较对象和原始值(数字、字符串)稍微有点复杂,有一个函数调用过程。一般情况下,JavaScript的对象从关系链的最顶层继承了toString()和valueOf()两个方法,为对象设置这两个方法,可以覆盖默认的toString()、valueOf()。
4.3.3.html为对象设置toString()、valueOf()方法,并在函数执行时输出提示语句,以便查看对象在执行比较运算时的函数调用过程,如下所示。
动手写4.3.3
执行4.3.3.html,输出比较结果、函数调用过程到网页,如下图所示。
图4.3.3 比较对象与原始值
在获取原始值的过程中,函数valueOf()先执行,因此看到先输出valueOf函数的提示语句,再执行toString()。如果这两个函数中有一个的返回值是原始值(数字、字符串),则使用该值进行比较。
提示
调用对象的valueOf()和toString()获取原始值(数字、字符串),如果转换失败(返回值不是数字或字符串),会报错。其他情况调用这两个方法,不会报错。
有关零基础JavaScript从入门到精通的文章
例如,typeof 1.2输出结果为number,表示1.2是数字类型。在实际应用中,typeof常常用于检测参数的数据类型,如下表所示。typeof null返回值是object,这是早期JavaScript设计时遗留下的问题,即使到现在也无法通过typeof判断null类型。利用typeof可以避免使用未定义的变量导致程序执行出错。图3.2.7使用typeof获取数据类型关键字typeof在两种情况下会返回undefined:变量不存在和变量的值未定义。......
2023-11-08
continue语句用于终止本次循环,继续执行下一次循环,语法格式如下:语法格式说明:◇ continue有两种使用形式,默认不加标签名,结束紧邻的循环语句。◇ continue跟随标签名,表示终止本次循环之后跳转的位置。图6.4.3continue语句终止本次循环上例使用continue语句跳过奇数。提示continue跳出外层循环会使代码的可读性变得很差,一般情况下不建议使用。......
2023-11-08
表13.2.3document对象方法◇ document.getElementById,即使存在多个相同id,也返回第一个节点,从语义上不应该存在多个相同id。动手写13.2.3执行13.2.3.html,输出结果到网页,如下图所示。图13.2.3document对象方法HTMLCollection和NodeList并不是数组,只是和数组的数据结构类似,不具有数组相关方法,俗称伪数组。函数内部的arguments对象也属于伪数组。提示HTMLCollection使用时一般将其实例转换为数组,比如使用boldCollection=[].slice.call,转换成数组后,节点变化不再影响数组长度。......
2023-11-08
DOM文档树形结构由不同节点组成,图14.1.1文档对象模型展示的都是节点,各个节点具有特定的分类:◇ 根节点,最顶层的标签称为根节点,是HTML文档的最顶层标签。表14.2.1节点类型列表提示文档全部由节点组成,标签是节点的一种类型,通常情况下,也使用元素表示标签。图14.2.2节点类型所有节点都具有nodeName属性,用来表示节点名称,比如comment.nodeName是“#comment”,document.nodeName是“#document”,text.nodeName是“#text”。......
2023-11-08