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
jQuery实现设置、移除文本框默认值功能
Jan 13 Javascript
javascript面向对象之对象的深入理解
Jan 13 Javascript
JQuery实现简单的服务器轮询效果实例
Mar 31 Javascript
JS实现的RGB网页颜色在线取色器完整实例
Dec 21 Javascript
原生JS改变透明度实现轮播效果
Mar 24 Javascript
微信小程序 input输入及动态设置按钮的实现
Oct 27 Javascript
jQuery 实现倒计时天,时,分,秒功能
Jul 31 jQuery
vue-lazyload使用总结(推荐)
Nov 01 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
Apr 01 jQuery
js最全的数组的降维5种办法(小结)
Apr 28 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
Oct 28 Javascript
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
php横向重复区域显示二法
2008/09/25 PHP
php正则表达匹配中文问题分析小结
2012/03/25 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
php版交通银行网银支付接口开发入门教程
2016/09/26 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
js TextArea的选中区域处理
2010/12/28 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
2013/10/24 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
Firefox下无法正常显示年份的解决方法
2014/09/04 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
jQuery添加和删除指定标签的方法
2015/12/16 Javascript
jquery 多个radio的click事件实例
2016/12/03 Javascript
原生js轮播特效
2017/05/18 Javascript
Bootstrap响应式导航由768px变成992px的实现代码
2017/06/15 Javascript
springmvc接收jquery提交的数组数据代码分享
2017/10/28 jQuery
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
vue获取验证码倒计时组件
2019/08/26 Javascript
vue使用require.context实现动态注册路由
2020/12/25 Vue.js
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
Python字符串切片操作知识详解
2016/03/28 Python
python执行CMD指令,并获取返回的方法
2018/12/19 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
CSS3制作3D立方体loading特效
2020/11/09 HTML / CSS
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
大学生收银员求职信分享
2014/01/02 职场文书
教学质量评估实施方案
2014/03/17 职场文书
手术室护士个人总结
2015/02/13 职场文书
党纪处分决定书
2015/06/24 职场文书
年中了,该如何写好个人述职报告?
2019/07/02 职场文书
pytest配置文件pytest.ini的详细使用
2021/04/17 Python
Python基础之hashlib模块详解
2021/05/06 Python
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android
纯html+css实现打字效果
2021/08/02 HTML / CSS
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android