javascript值类型(value)

array,string,number是非常常用的数据类型,javascript里面有些比较特殊的用法需要注意。

Arrays

javascript里面的数组可以包含任何类型,多维的,而且是动态的。有几个特殊的地方:

①索引会被转换为Number,length会相应变化

②delete删除的位置被填充值undefined,length不变

 

Array-Likes(类数组)

dom操作时会获取到一些类似数组的对象,可以使用数组的indexOf,concat,forEach等方法,但是数组很多其他的方法不能使用,

①通常可以将类数组转换为数组进行操作

Array.prototype.slice.call(arrayLikes)或ES6里面使用:Array.from( arguments )

②字符串中的字符用分隔符

Array.prototype.join.call("abc","-");//"a-b-c"
//使用map进行复杂的操作
Array.prototype.map.call("abc",function(e){return e.toUpperCase()+"#"}).join("");//"A#B#C#"

③数组反转和字符串反转

["a","b","c"].reverse();//["c", "b", "a"]
//字符串没有reverse(),而且字符串是不可变的,需要经过一次转换
"abc".split("").reverse().join("");//"cba"

Numbers

javascript就一种数字类型number,不像C#等语言(int,float,decimal,double等),通常是10进制的。

var num=42.0,num2=42.,num3=42.00;//全部输出42

可以通过toFixed()指定精确度:

var a = 42.59;
a.toFixed( 0 ); // "43"
a.toFixed( 1 ); // "42.6"
a.toFixed( 2 ); // "42.59"
a.toFixed( 3 ); // "42.590"
a.toFixed( 4 ); // "42.5900"

还有一个类似的toPrecision():

var a = 42.59;
a.toPrecision( 1 ); // "4e+1"
a.toPrecision( 2 ); // "43"
a.toPrecision( 3 ); // "42.6"
a.toPrecision( 4 ); // "42.59"
a.toPrecision( 5 ); // "42.590"
a.toPrecision( 6 ); // "42.5900"

浮点数数的不精确

0.1+0.2====0.3;//false

javascript里面用浮点数来表示Number,所以运算的结果不一定是我们想的那样。

ES6里面提供了整数的安全范围:Number.MAX_SAFE_INTEGER[Math.pow(2,53)-1],Number.MIN_SAFE_INTEGER[前面的相反数],判断是否为整数:Number.isInteger,Number.isSafeInteger

 

null,undefined,void

undefined和null类型只有一个值就是:undefined和null。它们之间细微的差别:null是一个空值,undefined是没有赋值

void运算符返回undefined

 

特殊的Number

NaN:

Infinity,-Infinity:

0,-0:

0===-0;//true

 

本文参考原文:https://github.com/getify/You-Dont-Know-JS

javascript
作者:张雪飞
出处:https://zhangxuefei.site/p/1546
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

发表评论

电子邮件地址不会被公开。 必填项已用*标注