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变量
May 25 Javascript
面向对象的Javascript之三(封装和信息隐藏)
Jan 27 Javascript
jQuery取id有.的值的方法
May 21 Javascript
js对象的复制继承实例
Jan 10 Javascript
JS实现简单路由器功能的方法
May 27 Javascript
JavaScript的Number对象的toString()方法
Dec 18 Javascript
从零学习node.js之mysql数据库的操作(五)
Feb 24 Javascript
js实现瀑布流效果(自动生成新的内容)
Mar 16 Javascript
微信小程序 rich-text的使用方法
Aug 04 Javascript
vue.js select下拉框绑定和取值方法
Mar 03 Javascript
详解Vue.js使用Swiper.js在iOS
Sep 10 Javascript
Echarts如何重新渲染实例详解
May 30 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
一台收音机,让一家人都笑逐颜开!
2020/08/21 无线电
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
php实现的仿阿里巴巴实现同类产品翻页
2009/12/11 PHP
Window下PHP三种运行方式图文详解
2013/06/11 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
2015/07/09 PHP
PHP7 mongoDB扩展使用的方法分享
2019/05/02 PHP
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
JS trim去空格的最佳实践
2011/10/30 Javascript
JavaScript之编码规范 推荐
2012/05/23 Javascript
JS隐藏参数post传值实例
2013/04/18 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
浅谈页面装载js及性能分析方法
2014/12/09 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
angular实现spa单页面应用实例
2017/07/10 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
puppeteer实现html截图的示例代码
2019/01/10 Javascript
vue中使用vee-validator完成表单校验方案
2019/11/01 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
2019/11/09 Javascript
vue el-table实现自定义表头
2019/12/11 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
2018/02/18 Python
python3调用R的示例代码
2018/02/23 Python
Python中分支语句与循环语句实例详解
2018/09/13 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
Python面向对象魔法方法和单例模块代码实例
2020/03/25 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
纯CSS3实现滚动的齿轮动画效果
2014/06/05 HTML / CSS
css3设置box-pack和box-align让div里面的元素垂直居中
2014/09/01 HTML / CSS
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
异常和异常类的概念
2014/09/12 面试题
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
2014幼儿教师个人工作总结
2014/12/03 职场文书
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript