Javascript中引用类型传递的知识点小结


Posted in Javascript onMarch 06, 2017

JS里面哪些类型是引用类型?

Object类型都是引用类型.(function,array,date,regexp..)

JS哪些类型是值传递?

基本类型都是值传递.值传递就是重新copy一个副本进行传递.

如何把值类型的变量以引用类型的方式进行传递?

通过把基础类型包装之后可以以引用类型传递.

ECMAScript提供了三个特殊的引用类型(基本包装类型): Boolean,String,Number.

引用类型与基本包装类型的区别: 对象的生存期不同.

见代码:

var str = "hello js"; 
var str2 = str.substring(2,5); 


// str2的形成 在JS内部是这样实现的.

var str = new String('hello js');
var str2 = str.substring(2,5);
str = null ;

引用类型的内存分配

如: var o = {name: ‘kobe'};

Javascript中引用类型传递的知识点小结

栈: 保存的是一个指针,指向的是对象在堆上面的内存地址.我们通过指针句柄来操作堆上面的对象.

理解== 与 === 的区别

“===” 严格运算符

严格运算符的运算规则:

1、不同数据类型

如果两个值的类型不同,直接返回false。

2、同一类型的基本数据类型(string,boolean,number)

同一类型的原始类型的值(数值、字符串、布尔值)比较时,值相同就返回true,值不同就返回false。

3、同一类型的复合数据类型

两个复合类型(对象、数组、函数)的数据比较时,不是比较它们的值是否相等,而是比较它们是否指向同一个对象。

console.log( [1] === [1] ) // false

4、undefined和null

undefined 和 null 与自身严格相等。

console.log( null === null ) // true
console.log( undefined === undefined ) // true

“==” 相等运算符

相等运算符在比较相同类型的数据时,与严格相等运算符完全一样。

在比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较。类型转换规则如下(以下讨论的是不同类型):

1、都是原始类型的值得情况

原始类型的数据会转换成数值类型再进行比较。

2、对象与原始类型值比较

对象(这里指广义的对象,包括数值和函数)与原始类型的值比较时,对象转化成原始类型的值,再进行比较。

3、undefined和null

undefined和null与其他类型的值比较时,结果都为false,它们互相比较时结果为true

console.log( null == undefined ) // true

4、相等运算符的缺点

相等运算符隐藏的类型转换,会带来一些违反直觉的结果。

console.log( "" == "0" ) // false 
console.log( 0 == "" ) // true
console.log( 0 == "0" ) // true
console.log( false == "false" ) // false
console.log( false == "0" ) // true

还有一个就是涉及undefined的条件判断,undefined与null的条件判断.可能会对你的代码造成印象.

var a = undefined;
if(!a){
 console.log("1"); //1
}

var a = undefined;
if(a === null){
 console.log("1"); //无输出
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JS运行耗时操作的延时显示方法
Nov 19 Javascript
js 实现 input type="file" 文件上传示例代码
Aug 07 Javascript
JavaScript实现多维数组的方法
Nov 20 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
Jan 07 Javascript
jquery中map函数遍历数组用法实例
May 18 Javascript
jQuery实现背景弹性滚动的导航效果
Jun 01 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
Jun 03 Javascript
js获取当前页的URL与window.location.href简单方法
Feb 13 Javascript
详谈JS中数组的迭代方法和归并方法
Aug 11 Javascript
ES6学习教程之模板字符串详解
Oct 09 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
Aug 06 Javascript
vue中使用mockjs配置和使用方式
Apr 06 Vue.js
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
Mar 06 #Javascript
js正则表达式验证表单【完整版】
Mar 06 #Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
Mar 06 #Javascript
js实现动态显示时间效果
Mar 06 #Javascript
jQuery实现 上升、下降、删除、添加一行代码
Mar 06 #Javascript
Node.js使用NodeMailer发送邮件实例代码
Mar 06 #Javascript
js eval函数使用,js对象和字符串互转实例
Mar 06 #Javascript
You might like
jQuery对象[0]是什么含义?
2010/07/31 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
2016/03/07 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
JS和JQuery实现雪花飘落效果
2017/11/30 jQuery
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
vue数据初始化initState的实例详解
2019/04/11 Javascript
小试小程序云开发(小结)
2019/06/06 Javascript
JS使用setInterval计时器实现挑战10秒
2020/11/08 Javascript
[46:23]完美世界DOTA2联赛PWL S2 FTD vs Magma 第一场 11.20
2020/11/23 DOTA
详解Python当中的字符串和编码
2015/04/25 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
Python调用服务接口的实例
2019/01/03 Python
Python高级特性与几种函数的讲解
2019/03/08 Python
pytorch使用指定GPU训练的实例
2019/08/19 Python
python实现批量命名照片
2020/06/18 Python
python+opencv实现车道线检测
2021/02/19 Python
CSS3实现瀑布流布局与无限加载图片相册的实例代码
2016/12/22 HTML / CSS
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
Sandro法国官网:法国成衣品牌
2019/08/28 全球购物
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
超市营业员求职简历的自我评价
2013/10/17 职场文书
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
四年大学生活的自我评价范文
2014/02/07 职场文书
专业求职信撰写要诀
2014/02/18 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书
给学校的建议书400字
2015/09/14 职场文书
《春酒》教学反思
2016/02/22 职场文书
感恩信:写给爸爸妈妈的一封感谢信
2019/09/12 职场文书
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android
Python一些基本的图像操作和处理总结
2021/06/23 Python
Vue OpenLayer 为地图绘制风场效果
2022/04/24 Vue.js