JS中值类型与引用类型分析
来源:互联网 发布:网络投放 编辑:程序博客网 时间:2024/05/22 01:26
JavaScript中的值类型与引用类型
在JavaScript中,“全等(===)运算符”用来对值类型/引用类型的实际数据进行比较和检查。按照约定,基于上述类型系统的运算中(以下所谓“值”,也包括undefined):
- 一般表达式运算的结果总是值
- 函数/方法调用的结果可以返回值或者引用
- 值与引用、值与值之间即使等值(==),也不一定全等(===)
- 两个引用之间如果等值(==),则一定全等(===)
从表面上来看,一个值应该与其自身“等值/全等”。但事实上,在JavaScript中存在一个例外:一个NaN值,与其自身并不等值,也不全等。
举几个栗子:
0 == "0" //true0 === "0" //false1 == true //true0 == true //false's' == 's' //truenew String('s') == new String('s') //false 这里都是引用
两种类型在函数调用时的区别
JavaScript中的值类型与引用类型,同其他通用高级语言一样,表达的含义是数据在运算时的使用方式:参与运算的是其值亦或其引用。因此在下面的示例中,不同的值类型通过相同的函数调用之后输出的是不同的结果。
//1function newToString(){ return 'Hello World!';}function func(val){ val.toString = newToString;}var str = 'abc';var strTemp = new String(str);func(str);//只传入了str的值,因此对它的toString修改是无意义的console.log(str);//abcfunc(strTemp);//传入引用,修改toString属性会影响到后面的运算。console.log(strTemp);//Hello World!//2function addNum(num){ num+=num*2; return num;}var num = 1;var result = addNum(num);console.log(num);//1console.log(result)//3//3function setName(obj){ obj.name = 'Jack'; obj = new Object(); //创建一个新的对象,并且把新对象的地址赋值给obj,所以obj并不指向外面的obj。 obj.name = 'Jacky';}var obj = new Object();obj.name = 'test';setName(obj);console.log(obj.name);//Jack
0 0
- JS中值类型与引用类型分析
- JS中值类型与引用类型分析
- java中值类型与引用类型
- C#中值类型与引用类型对比
- C#中值类型和引用类型的分析
- C#中值类型和引用类型的区别深度分析
- C#中值类型和引用类型的区别深度分析
- C++与C#中值类型与引用类型的区别
- EXCEL VBA 中值类型与引用(对象)类型
- 黑马程序员—C#中值类型与引用类型
- C#中值类型与引用类型异同对比
- C#中值类型和引用类型
- C#中值类型和引用类型
- C#中值类型和引用类型
- C#中值类型和引用类型区别
- c# 中值类型和引用类型
- 理解JavaScript中值类型和引用类型
- C#中值类型和引用类型
- Windows启动原理
- 类加载器释疑
- LeetCode 95. Unique Binary Search Trees II
- 1018: 说反话
- python基本语法(二)
- JS中值类型与引用类型分析
- UVA - 575 Skew Binary
- IOS CATransition 立体动画效果
- UVA - 10110 Light, more light
- tjut 2855
- 深度学习方法(六):神经网络weight参数怎么初始化
- java中重写方法应遵循规则
- Android 悬浮窗实现
- ZZULI-oj -1905 小火山的跳子游戏 (GCD)