时间:2021-05-18
1. 非数值类型转数值
使用Number()转换时:
使用parseInt()转换时:
使用parseFloat()转换时:
parseFloat和parseInt的第一个区别在于它在解析字符串是是遇到一个无效的浮点数值字符为止,比parseInt多了.
解析十六进制数值时返回0
parseFloat函数没有第二个可以指定基数的参数,所以只解析十进制值。
如果字符串是个整数,则返回整数而不是浮点数
var num = parseFloat("2.125e7"); //31250000
2. 使用toString()输出不同进制的数值
此条适用于整数,我们可以用toString()返回任意进制的整数。
var num = 10;alert(num.toString()); //"10"alert(num.toString(9)); //"11"alert(num.toString(16)); //"a"3. 位操作符时注意NaN和Infinity
在对NaN和Infinity使用位操作符时,这两个数值都会被当成0来处理。 如果对于非数值应用位操作符,会先使用Number()函数将该值转换为一个数值。
还有一点要注意的就是负数的无符号右移,无符号右移是以0来填充空位,而不像有符号右移以符号位填充空位,所以对正数的无符号右移和有符号右移结果相同,但对负数就不同了。无符号右移操作会把负数的二进制码当成正数的二进制码,而且负数是以补码形式表示,因此会导致无符号右移后的结果相差非常大。
var oldValue = -64; var newValue = oldValue >>> 54. 特殊的数值运算
对于数值运算,如果有一个操作数为NaN,则结果为NaN。
对非数值应用使用一元加操作或减操作(+,-,正负号),如果该值无法转换为数值(使用Number()方式转换),则返回NaN。
Infinity和0相乘等于NaN,和非0数相乘为Infinity和-Infinity,取决于乘数的正负号。Infinity和Infinity相乘等于Infinity。
零除零为NaN,非零数除以零为Infinity或-Infinity。Infinity除以Infinity为NaN
对于取模运算,下面等式成立:
加法运算:如果两个操作数都是字符串则+变为字符串连接。如果一个为字符串,一个为数值,将数值转换为字符串,然后连接字符串,如果一个操作数是对象,布尔值则先调用它们的valueOf方法,如无,在调用toString方法。再根据返回值类型,判断+号应该连接字符串还是相加。
Infinity + -Infinity = NaN;var p = { valueOf: function () { return -1; }};var num =1;var result = num +p;alert(result); // 0 相加var p = { valueOf: function () { return "not a num"; }};var num =1;var result = num +p;alert(result); //1not a num 字符串连接减法运算:减法运算和加法运算十分相似,关于对象的处理也是一样,所以不再说明。
5. 关系操作符的使用
关系操作符就是小于(<)、大于(>)、小于等于(<=)和大于等于(>=)
只要有一个数值,就会执行数值比较,另一个不为数值,则转为数值。对象先用valueOf,后用toString。其实对象无论执行什么运算都是这样,有valueOf,则用valueOf返回值,否则使用toString返回值。
两个都为字符串,则比较字符串的字符编码值(ASCII值)
关于第一个还要注意,在一个时候字符串一个是数值时,字符串无法转数值时,即为NaN会出现如下情况
6. ==和===
在JavaScript中,如果等式两边类型不同,或者仅包含一个对象,那么比较会分为两种情况,转型后比较和不转型直接比较。 ==是先转换在比较,===是不转换直接比较。 对于来说===,只要类型不相等就返回false。 而对于==来说,分为如下几种情况:
true会转换为1,false会转换为0。
字符串和数值比较,字符串会转换为数值。
如果等式两边只有一个对象,这个对象会调用valueOf得到基本类型,如无valueOf方法调用toString方法。如果两边都是对象则不转型。
下面是特殊的比较情况
7. for-in语句
for-in语句输出顺序不可预测,次序可能因为浏览器不同而有所差异。
要迭代的变量未null或undefined时,ECMAScript 5下不再抛出错误而是不执行循环体。如果想向前兼容,则在循环前判断不为null或undefined。
8. swithc语句
switch可以使用任何数据类型。
case的值可以是常量,变量和表达式。
switch语句在比较值时使用的是全等比较操作符(===)。
9 函数的使用
函数内没有return语句或return不带任何返回值,则函数都会返回undefined。
函数的定义时和函数的调用时参数不比保持一致。换句话说两种参数(形参和实参)并没有任何联系。函数定义时提供的变量只是使用时较为方便,就算不定义也可以获得传递给函数的参数(通过arguments[])。
形参和arguments[]之间的关系如下,注意严格模式和非严格模式区别。
10. 函数参数的使用
在定义函数时,我们会把用到的参数写到函数的括号内,但是在有多个可选参数的情况下就会不够灵活,这个时候可以使用对象封装多个可选参数。
function displayInfo(args){ var output = ""; if (typeof args.name == "string"){ output += "Name: " + args.name + "\n"; } if(typeof args.age == "number"){ output += "Age: "args.age + "\n"; } alert(output); } displayInfo({ name: "Nicholas", age: 29 }); displayInfo({ name: "Greg" });声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文为你介绍MySQL中十条鲜为人知的技巧。MySQL易学易用,且附带丰富的技术文档,这二个因素使之被广泛应用。然而,随着MySQL发展之迅速,即使一个MySQ
一早起来,我在微信群看到一篇文章《施炜:2020,给实体经济企业家的十条建议》。十条建议确实拨开云雾,给人对未来有一种豁然开朗的清醒认知。但看后我仍然感觉很迷惑
淘宝开店难免有一段跌跌撞撞的路程,很多从暴风雨中走过来的店铺都有着一些共同的经验,以下是怎么开网店小编总结的十条经验,希望对卖家们有所启发。第一,要有品牌意识。
地名不能注册商标: 我国《商标法》第十条第二款明确规定:“县级以上行政区划的地名或者公众知晓的外国地名,不得作为商标,但是,地名具有其他含义或者作为集体商标、
实实在在的网店推广方法之十条军规。关于网店推广的文章网上有很多很多经验贴!这里主要说的是网店内在的推广方法,做好以下几条,对增加回头客是有帮助的,当然也是仁者见