您的位置:首页 > Web前端 > JavaScript

JavaScript变量类型和计算总结

2019-04-28 16:34 441 查看

一,变量类型
1,值类型:Number,String,Boolean,Null,Undefined

2,引用类型:Object,Array,Function

3,值类型和引用类型的区别:

(1)值类型

1)占用空间固定,保存在栈中(当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁了。因此,所有在方法中定义的变量都是放在栈内存中的;栈中存储的是基础变量以及一些对象的引用变量,基础变量的值是存储在栈中,而引用变量存储在栈中的是指向堆中的数组或者对象的地址,这就是为何修改引用类型总会影响到其他指向这个地址的引用变量。)

2)保存与复制的是值本身

3)使用typeof检测数据的类型

4)基本类型数据是值类型

(2)引用类型

1)占用空间不固定,保存在堆中(当我们在程序中创建一个对象时,这个对象将被保存到运行时数据区中,以便反复利用(因为对象的创建成本通常较大),这个运行时数据区就是堆内存。堆内存中的对象不会随方法的结束而销毁,即使方法结束后,这个对象还可能被另一个引用变量所引用(方法的参数传递时很常见),则这个对象依然不会被销毁,只有当一个对象没有任何引用变量引用它时,系统的垃圾回收机制才会在核实的时候回收它。)

2)保存与复制的是指向对象的一个指针

3)使用instanceof检测数据类型

4)使用new()方法构造出的对象是引用型

二,变量计算

1,强制类型转换

(1)字符串拼接

var a = 10+10; 		//20
var b = 10+'10';	//'1010'

(2)==运算符(0,’ ',null,undefined都会转为false,其他会转为true)

null == undefined;		//true
100 == '100';			//true
0 == ' ';			//true

(3)if 语句(0,’ ',null,undefined都会转为false,其他会转为true)

(4)逻辑运算(0,’ ',null,undefined都会转为false,其他会转为true)

console.log(10&&0);		//0
console.log(!window.abc);	//true

2,js中= =和= = =区别

(1)===:值相等且类型相同。

(2)===:两边值类型不同的时候,要先进行类型的转换,再比较。
1)对象和布尔值的比较
对象和布尔值进行比较时,对象先转换为字符串,然后再转换为数字,布尔值直接转换为数字。

[] == true;  //false  []转换为字符串'',然后转换为数字0,true转换为数字1,所以为false

2)对象和字符串比较
对象和字符串进行比较时,对象转换为字符串,然后两者进行比较。

[1,2,3] == '1,2,3' // true  [1,2,3]转化为'1,2,3',然后和'1,2,3', so结果为true;

3)对象和数字比较
对象和数字进行比较时,对象先转换为字符串,然后转换为数字,再和数字进行比较。

[1] == 1;  // true  `对象先转换为字符串再转换为数字,二者再比较 [1] => '1' => 1 所以结果为true

4)字符串和数字比较
字符船和数字进行比较时,字符串转换成数字,二者再比较。

'1' == 1 // true

5)字符串和布尔值比较
字符串和布尔值进行比较时,二者全部转换程值再比较。

'1' == true; // true

6)布尔值和数字比较
布尔值和数字进行比较时,布尔转换为数字,二者再比较。

true == 1 // true

7)undefined和null比较

undefined == null //true undefined和null 比较返回true,二者和其他值比较返回false
Number(null) //0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: