每日十条JavaScript经验技巧(二)
本文是每日十条JavaScript经验技巧系列文章的第二篇,接下来我将为大家分享十条个人在项目中的经验技巧,希望大家能够喜欢并有所收获。
一、非数值类型的数值转换
在进行JavaScript编程时,经常需要将非数值类型转换为数值类型。使用Number()进行转换时,需要注意以下几点:
undefined会转为NaN。
如果字符串以0开头,浏览器会忽略前导0。
如果字符串以0x开头,浏览器会按照十六进制转化为十进制。
如果字符串包含除(+,-,.)外的字符,将返回NaN。
对于对象转换,先调用valueOf()方法,然后按规则转换。若无valueOf方法,则调用toString方法再转换。
使用parseInt()和parseFloat()进行转换时,也有各自的规则和特点。需要注意的是,parseFloat()在遇到无效的浮点数值字符时会停止,而parseInt()则不然。
二、不同进制的数值输出
在JavaScript中,我们可以使用toString()方法返回任意进制的整数。这一技巧特别适用于整数。例如:
```javascript
var num = 10;
alert(num.toString()); // "10"
alert(num.toString(9)); // "11"
alert(num.toString(16)); // "a"
```
三、位操作符的注意事项
在使用位操作符时,需要注意NaN和Infinity会被当成0处理。对非数值应用位操作符时,会先使用Number()函数转换。还有一点要注意的是负数的无符号右移,无符号右移以0填充空位,与有符号右移不同。
四、特殊的数值运算
在数值运算中,如果一个操作数为NaN,则结果为NaN。对非数值应用一元加操作或减操作(+,-),若无法转换为数值,将返回NaN。在进行数值运算时,这些特殊情况需要我们特别注意和处理。
五、使用严格等于判断数据类型
在JavaScript中,可以使用严格等于(===)来判断一个值的数据类型。这种方法比使用typeof操作符更准确,因为typeof在某些情况下可能返回不准确的结果。例如:
```javascript
var a = null;
JavaScript中的数值运算与类型转化
在JavaScript中,数值运算涉及多种情况,尤其是当涉及特殊值如Infinity、NaN以及对象、布尔值时。让我们深入这些场景。
让我们看一些关于数值转化的例子。当我们尝试将字符串转化为数字时,可以使用加号(+)进行转化。例如:
`var s1 = "01"; s1 = +s1; // "01"转化为数字1`
`var s2 = "1.1"; s2 = +s2; // "1.1"转化为数字1.1`
`var s3 = "z"; s3 = +s3; // 字符串"z"无法转化为数字,结果为NaN`
`var b = false; b = +b; //布尔值false转化为数字0`
当一个数值与对象进行运算时,对象的`valueOf`方法会被首先调用。如果该方法返回基本类型,则继续执行相应的运算;否则,会调用`toString`方法。例如:
`var o = {valueOf: function() {return -1;}}; o = -o; //对象转化为数字-1`
`var p = {valueOf: function() {return "not a num";}}; var num = 1; var result = num + p; //结果为字符串连接,"1not a num"`
关于Infinity的运算,有一些特殊的规则。例如:
Infinity与0相乘结果为NaN,与非零数相乘为Infinity或-Infinity,取决于乘数的正负。
Infinity和Infinity相乘结果为Infinity。
当涉及除法运算时,零除零为NaN,非零数除以零为Infinity或-Infinity。Infinity除以Infinity为NaN。对于取模运算,有一些特定的规则也适用。
接下来,我们来看看关系操作符的使用。这些操作符包括小于(<)、大于(>)、小于等于(<=)和大于等于(>=)。在JavaScript中,只要其中一个值是数值,就会执行数值比较。如果两个值都是字符串,则比较它们的字符编码值(ASCII值)。如果一个是字符串,一个是数值,字符串会尝试转换为数值进行比较。值得注意的是,"a"这样的字符串无法转换为数值时,会返回NaN,并且任何数与NaN进行比较都会返回false。
JavaScript的世界:理解对象与函数参数的使用
在JavaScript的世界里,一切都是对象。当我们变量p和q时,尽管它们的内容相同,但由于它们指向的是不同的对象,因此它们的地址也不同。这就像狼蚁网站SEO优化一样,每个细节都有其特殊性和比较情况。
当我们深入JavaScript的核心时,会遇到许多有趣的概念。例如,null和undefined之间的差异,NaN的独特性质以及switch语句的灵活性。这些特性使得JavaScript成为了一个强大且富有表现力的语言。
让我们来看看for-in语句。这种语句的输出顺序可能因浏览器而异,无法预测。当要迭代的变量为null或undefined时,ECMAScript 5不再抛出错误,而是不执行循环体。为了确保代码的向前兼容性,建议在循环前检查变量是否为null或undefined。
接下来是switch语句。它可以使用任何数据类型,case的值可以是常量、变量和表达式。在比较值时,switch语句使用的是全等比较操作符(===)。通过灵活运用switch语句,我们可以编写出更加灵活和高效的代码。
当我们谈到函数时,有许多重要的概念需要理解。函数内如果没有return语句或return不带任何返回值,则函数会返回undefined。函数的定义和调用时的参数不必保持一致。换句话说,形参和实参并没有直接联系。我们可以通过arguments[]获取传递给函数的参数,即使在函数定义时没有定义形参。
当我们处理多个可选参数时,可以使用对象来封装这些参数。这种方式更加灵活,可以处理各种情况。例如,displayInfo函数可以接受一个包含姓名和年龄的对象作为参数,然后输出这些信息。
让我们以一句代码结束这篇文章:cambrian.render('body')。这句话似乎是在调用一个名为“cambrian”的对象的“render”方法,并将'body'作为参数传递给它。但具体做了什么,我们需要更多的上下文信息才能理解。
JavaScript是一门富有表现力和灵活性的语言。通过深入理解对象、函数和参数的使用,我们可以更好地利用它的强大功能来创建出色的Web应用程序。
网络安全培训
- 每日十条JavaScript经验技巧(二)
- 详解Vue Elementui中的Tag与页面其它元素相互交互的
- 一个30多年编程经验的程序员总结
- 3分钟快速搭建nodejs本地服务器方法运行测试htm
- jQuery Validate表单验证入门学习
- PHP的重载使用魔术方法代码实例详解
- centos 6.9安装mysql的详细教程
- .NET建造者模式讲解
- es6 字符串String的扩展(实例讲解)
- laravel5.6 框架操作数据 Eloquent ORM用法示例
- Discuz论坛标题和底部去掉版权信息实例讲解
- ThinkPHP框架整合微信支付之Native 扫码支付模式二
- php生成缩略图质量较差解决方法代码示例
- 详解如何用babel转换es6的class语法
- 基于JavaScript实现瀑布流效果(循环渐近)
- 详解linux正则表达式(基础正则表达式+扩展正则