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 相关文章推荐
document节点对象的获取方式示例介绍
Dec 24 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
Apr 10 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
Jun 28 Javascript
完美的js div拖拽实例代码
Sep 24 Javascript
Angularjs 实现移动端在线测评效果(推荐)
Apr 05 Javascript
基于javascript 显式转换与隐式转换(详解)
Dec 15 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
Sep 13 Javascript
node.js调用C++函数的方法示例
Sep 21 Javascript
vue组件之间的数据传递方法详解
Apr 19 Javascript
微信小程序如何自定义table组件
Jun 29 Javascript
详解vuex的简单todolist例子
Jul 14 Javascript
layUI的验证码功能及校验实例
Oct 25 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+MySQL的聊天室设计
2006/10/09 PHP
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
2013/06/25 PHP
一个PHP的ZIP压缩类分享
2014/05/04 PHP
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
JQuery 学习笔记 选择器之二
2009/07/23 Javascript
asp.net中System.Timers.Timer的使用方法
2013/03/20 Javascript
javascript间隔定时器(延时定时器)学习 间隔调用和延时调用
2014/01/13 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
a标签的href与onclick事件的区别详解
2014/11/12 Javascript
使用console进行性能测试
2015/04/27 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
JavaScript中的原始值和复杂值
2016/01/07 Javascript
jQuery实现放大镜效果实例代码
2016/03/17 Javascript
Angularjs中UI Router的使用方法
2016/05/14 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
基于javascript实现数字英文验证码
2017/01/25 Javascript
几行js代码实现自适应
2017/02/24 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
node实现登录图片验证码的示例代码
2018/04/20 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
js+canvas实现刮刮奖功能
2020/09/13 Javascript
Python端口扫描简单程序
2016/11/10 Python
火车票抢票python代码公开揭秘!
2018/03/08 Python
python中format()函数的简单使用教程
2018/03/14 Python
Python实现通过解析域名获取ip地址的方法分析
2019/05/17 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
详解CSS中iconfont的使用
2015/08/04 HTML / CSS
大学军训通讯稿
2014/01/13 职场文书
给全校老师的建议书
2014/03/13 职场文书
2014年教师党员公开承诺书
2014/05/28 职场文书
社区母亲节活动总结
2015/02/10 职场文书
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers