js笔记之数据类型

null

调用typeof null会返回"object",因为特殊值null被认为是一个空的对象引用

undefined

   实际上,undefined值是派生自null值得,所以null == undefined,尽管 null 和 undefined 有这样的关系,但它们的用途完全不同。
   如前所述,无论在什么情况下都没有必要把一个变量的值显式地设置为 undefined,可是同样的规则对 null 却不适用。
  换句话说,只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存 null 值.

Boolean

Boolean类型得字面值truefalse区分大小写,True和False只是标识符。

要将一个值转换成其对应得Boolean值,可以调用转型函数Boolean()

数据类型 转换为true值 转换为false值
Boolean true false
String 任何非空字符串 ""(空字符串)
Number 任何非零数字值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined n/a undefined
  • 这些转换规则对理解流控制语句(如 if 语句)自动执行相应的 Boolean 转换非常重要,请看下面的代码:
var message = "Hello world!";
var messageAsBoolean = Boolean(message);
#OR
var message = "Hello world!";
if (message){
alert("Value is true");
}

数值转换

  • 有 3 个函数可以把非数值转换为数值: Number()parseInt()parseFloat()。第一个函数,即转型函数 Number()可以用于任何数据类型,而另两个函数则专门用于把字符串转换成数值。

  • Number() 函数的转换规则如下:
    1.如果是 Boolean 值, true 和 false 将分别被转换为 1 和 0。
    2.如果是数字值,只是简单的传入和返回。
    3.如果是 null 值,返回 0。
    4.如果是 undefined,返回 NaN。
    5.如果是对象,则调用对象的 valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是 NaN,则调用对象的 toString()方法,然后再次依照前面的规则转换返回的字符串值。
    6.如果是字符串,遵循下列规则:
    如果字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值,即"1"会变成 1, "123"会变成 123,而"011"会变成 11(注意:前导的零被忽略了);
     如果字符串中包含有效的浮点格式,如"1.1",则将其转换为对应的浮点数值(同样,也会忽略前导零);
     如果字符串中包含有效的十六进制格式,例如"0xf",则将其转换为相同大小的十进制整数值;
     如果字符串是空的(不包含任何字符),则将其转换为 0;
     如果字符串中包含除上述格式之外的字符,则将其转换为 NaN。

var num1 = Number("Hello world!"); //NaN
var num2 = Number(""); //0
var num3 = Number("000011"); //11
var num4 = Number(true); //1
  • parserInt()函数
    1.它会忽略字符串前面的空格,直至找到第一个非空格字符。如果第一个字符不是数字字符或者负号, parseInt()就会返回 NaN;也就是说,用 parseInt()转换空字符串会返回 NaN( Number()对空字符返回 0)
    2.如果第一个字符是数字字符, parseInt()会继续解析第二个字符,直到解析完所有后续字符或者遇到了一个非数字字符。
    3.例如, "1234blue"会被转换为 1234,因为"blue"会被完全忽略。类似地, "22.5"会被转换为 22,因为小数点并不是有效的数字字符。

多数情况下,我们要解析的都是十进制数值,因此始终将 10 作为第二个参数是
非常必要的。

var num1 = parseInt("1234blue"); // 1234
var num2 = parseInt(""); // NaN
var num3 = parseInt("0xA"); // 10(十六进制数)
var num4 = parseInt(22.5); // 22
var num5 = parseInt("070"); // 56(八进制数)
var num6 = parseInt("70"); // 70(十进制数)
var num7 = parseInt("0xf"); // 15(十六进制数)

var num1 = parseInt("10", 2); //2 (按二进制解析)
var num2 = parseInt("10", 8); //8 (按八进制解析)
var num3 = parseInt("10", 10); //10 (按十进制解析)
var num4 = parseInt("10", 16); //16 (按十六进制解析
  • parserFloat()函数
    1.与 parseInt()函数类似, parseFloat()也是从第一个字符(位置 0)开始解析每个字符。而且也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止。
    2.也就是说,字符串中的第一个小数点是有效的,而第二个小数点就是无效的了,因此它后面的字符串将被忽略。举例来说,"22.34.5"将会被转换为 22.34。
var num1 = parseFloat("1234blue"); //1234 (整数)
var num2 = parseFloat("0xA"); //0
var num3 = parseFloat("22.5"); //22.5
var num4 = parseFloat("22.34.5"); //22.34
var num5 = parseFloat("0908.5"); //908.5
var num6 = parseFloat("3.125e7"); //31250000

String

  • toString()方法
    1.该方法可放入一个参数,默认情况下, toString()方法以十进制格式返回数值的字符串表示。
    2.而通过传递基数, toString()可以输出以二进制、八进制、十六进制,乃至其他任意有效进制格式表示的字符串值

数值、布尔值、对象和字符串值都有 toString()方法。但 null 和 undefined 值没有这个方法。

var num = 10;
alert(num.toString()); // "10"
alert(num.toString(2)); // "1010"
alert(num.toString(8)); // "12"
alert(num.toString(10)); // "10"
alert(num.toString(16)); // "a"
  • String()方法

在不知道要转换的值是不是 null 或 undefined 的情况下,还可以使用转型函数 String(),这个函数能够将任何类型的值转换为字符串。

 如果值有 toString()方法,则调用该方法(没有参数)并返回相应的结果;
 如果值是 null,则返回"null";
 如果值是 undefined,则返回"undefined"。



参考资料:
《javaScript高级程序设计第三版》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容