JS中哪些类型是引用类型?
对象类型都是引用类型。(函数、数组、日期、正则表达式.)
值传递是什么类型的JS?
基本类型是价值转移。价值转移是为了转移而重新复制一份拷贝。
如何通过引用类型传递值类型的变量?
通过包装基类型,它可以作为引用类型传递。
ECMAScript提供了三种特殊的引用类型(基本打包类型):布尔值、字符串和数字。
参考类型和基本包装类型的区别:对象的生命周期不同。
参见代码:
var str=' hello jsvar str2=str.substring(2,5);str 2的形成就是这样在JS中实现的。var str=new String(' hello js ');var str2=str.substring(2,5);str=null引用类型的内存分配
例如: var o={ name: ' kobe ' } ' }
堆栈:保存指向堆上对象的内存地址的指针。我们通过指针句柄操作堆上的对象。
理解==和===
"==="严格运算符
严格操作者的操作规则:
1.不同的数据类型
如果两个值的类型不同,则直接返回false。
2.相同类型的基本数据类型(字符串、布尔值、数字)
当比较相同类型的原始值(数值、字符串、布尔值)时,如果值相同,它将返回true如果值不同,它将返回false。
3.同一类型的复合数据类型
当比较两个复合类型(对象、数组和函数)的数据时,不是比较它们的值是否相等,而是比较它们是否指向同一个对象。
Console.log([1]===[1]) //false4,未定义且为空
Undefined和null严格等于它们自己。
console . log(null===null)//true console . log(undefined===undefined)//true "=="相等运算符
比较相同类型的数据时,相等运算符与严格相等运算符完全相同。
比较不同类型的数据时,相等运算符首先转换数据,然后将它们与严格相等运算符进行比较。类型转换规则如下(下面讨论不同的类型):
1、都是价值的原始类型
原始类型的数据将转换为数字类型进行比较。
2.将对象与原始类型值进行比较
当一个对象(这里是广义对象,包括值和函数)与原始类型的值进行比较时,该对象被转换为原始类型的值,然后进行比较。
3.未定义且为空
当undefined和null与其他类型的值进行比较时,结果为假,当它们相互比较时,结果为真
console . log(null==undefined)//true 4,相等运算符的缺点
等式运算符的隐藏类型转换会带来一些违反直觉的结果。
console . log('=' 0 ')//false console . log(0==' ')//True console . log(0==' 0 ')//True console . log(false==' false ')//True console . log(false==' 0 ')//True,另一种是涉及undefined的条件判断,undefined和null的条件判断,可能会给你的代码留下印象。
var a=未定义;if(!a){ console . log(' 1 ');//1}var a=未定义;if(a===null){ console . log(' 1 ');//无输出}摘要
以上就是本文的全部内容。希望本文的内容能给你的学习或工作带来一些帮助。有问题可以留言交流。谢谢你的支持。