JavaScript基础对象实用小知识

一、JavaScript的基础类型

我们在程序中所使用的任何值都是有类型的。JavaScript 仅有以下几大基本数据类型。

1.数字 — 包括浮点数与整数,例如这些都属于数字:1、100、3.14。
2.字符串 — 包括由任意数量字符组成的序列,例如:"a"、"one"、"one 2 three"。
3.布尔值 — 包括 true 和 false。
4.undefined — 当我们试图访问一个不存在的变量时,就会得到一个特殊值:undefined。除此之外,使用已声明却未赋值的变量也会如此。因为 JavaScript 会自动将变量在初始化之前的值设定为 undefined。而 undefined 类型的值只有一个 —undefined。
5.null — 这是另一种只包含一个值的特殊数据类型。所谓的 null 值,通常是指
没有值或空值,不代表任何东西。null 与 undefined 最大的不同在于,被赋予 null 的
变量通常被认为是已经定义了的,只不过它不代表任何东西。

任何不属于上述五种基本类型的值都会被认为是一个对象。

如果我们要查看某一个变量或对象属性的类型,可以使用typeof。该操作符会返回一个代表数据类型的字符串,以下是其可能返回的结果:

1."number"
2."string"
3."boolean"
4."undefined"
5."object"
6."function"

在 JavaScript 中,还有一种叫做Infinity 的特殊值。它所代表的是超出了 JavaScript 处理范围的数值。但 Infinity 依然是一个数字。

Infinity 表示的是最大数(或者比最大数还要大的数),那么最小数该如何表示呢?答案是在 Infinity 之前加一个负号:-Infinity 。

其次,NaN也是一种特殊数字,如果我们在算术运算中使用了不恰当的的操作数,导致运算失败,该运算就会返回NaN。

二、各类型的转换的注意点

1.数字字符串和数字相乘,字符串会隐式转化成number类型,并和数字相乘

> var s="1";
> var result=s*2;//2
> typeof(result)
> "number"

如果该字符串隐式转换失败,则该结果会返回NaN

所以,将数字字符串转换为数字就有了一种偷懒的方法:只需将该字符串与 1 相乘即可。但是,更好的选择是调用 parseInt()函数来显示转化。

2.数字和字符串相加,数字会被隐式转化成字符串

> var s="1";
> var result=s+2;//12
> typeof(result)
> "string"

根据这个特性,我们可以使用数字后面加一个空字符串隐式转化成字符串类型。

3.布尔值转化

除了下面所列出特定值以外(它们将被转换为 false),其余大部分值在转换为布尔值时都为 true。

空字符串""
null
undefined
数字 0
数字 NaN
布尔值 false

借助取反操作即(!、||、&&)三种内的!,我们可以很轻易地将任何值转换为相应的布尔值。并且,我们可以利用该特性,去判断一个变量或对象属性的值,例如我们需要判断一个变量的值是否为空或者不为空字符串,那么可以如下操作,当a为如上几种情况时,则会进入到else里面。

var a="1";
if(!a){
//true
}else{
//false
}

总结:在不熟悉JavaScript的隐式转化之前,我们使用各个类型都必须考虑其实际类型。因为JavaScript是一门弱类型语言,在定义变量时是string,但是后面将number类型的值赋予该变量会改变该变量的类型。因此实际使用的时候需要小心。我们如果想执行拼接操作的话,最好确保其所有的操作数都是字符串。同样地,在执行数字相加时,我们也要确保其所有的操作数都是数字

三、操作符以及其优先级

1.

2.当使用了||或&&,并且在表达式中只使用了其中的一种,那么JavaScript会采取惰性求值的方法。即如果在一个连续的逻辑操作中,操作结果在最后一个操作完成之前就已经明确了的话,那么该操作往往就不必再继续执行了,因为这已经不会对最终结果产生任何影响

> true || false || true || false || true;
true
当计算完第一个后,其余表达式都不会被计算。因为计算了第一个后,该表达式的结果已经可以确认了

3.如果 JavaScript 引擎在一个逻辑表达式中遇到一个非布尔类型的操作数,那么该操作数的值就会成为该表达式所返回的结果

> true || "something";
true

> 1 || "something";
1

> false || 1 || "something";
1

||的话,会返回第一个返回true的表达式的值

> true && "something";
"something"

> true && something && true;
true

> false && something && true;
false

&&的话,会返回最后一个非布尔类型的操作数,没有则返回布尔类型的值

通常情况下,这种行为应该尽量避免,因为它会使我们的代码变得难以理解。但在某些时候这样做也是有用的。例如,当我们能确定某个变量是否已经被定义时,就可以像下面这样,即如果变量 mynumber 已经被定义了,就保留其原有值,否则就将它初始化为 10。

> var mynumber = mynumber || 10;
> mynumber;
10

这种做法简单而优雅,但是请注意,这也不是绝对安全的。如果这里的 mynumber 之前被初始化为 0(或者是那 6 个 falsy 值中的任何一个),这段代码就不太可能如我们所愿了。

> var mynumber = 0;
> var mynumber = mynumber || 10;
> mynumber;
10

四、undefined 与 null

1.undefined表示该变量尚未被定义,而null表示该变量指向一个不存在或无效的对象或地址,表示无或完全不存在

2.undefined有自己的数据类型,而null,严格来说,它表示的是一个不存在的对象

3.在转换成数字类型时,undefined会被返回NaN,而null则会返回0

4.undefined == null返回的值是true,因为JavaScript会尽力将两个值转换为相同类型

因此在使用==时要小心,推荐使用===全等号

五、总结

1.JavaScript 语言中有五大基本数据类型:
 数字;
 字符串;
 布尔值;
 undefined;
 null。
2.任何不属于基本类型的东西都属于对象。
3.数字类型可以存储的数据包括:正负整数、浮点数、十六进制数与八进制数、指数以及特殊数值 NaN、Infinity、-Infinity。
4.字符串类型存储的是一对引号之间的所有字符。
5.布尔类型的值只有两个:true 和 false。
6.null 类型的值只有一个:null。
7.undefined 类型的值只有一个:undefined。
 绝大部分值在转换为布尔类型时都为 true,但以下 6 种 falsy 值除外:
 "";
 null;
 undefined;
 0;
 NaN;
 false。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章