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 相关文章推荐
JavaScript中Math对象使用说明
Jan 16 Javascript
firebug的一个有趣现象介绍
Nov 30 Javascript
JS事件在IE与FF中的区别详细解析
Nov 20 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
May 23 Javascript
JavaScript判断文件上传类型的方法
Sep 02 Javascript
javascript中var的重要性分析
Feb 11 Javascript
Angularjs中UI Router的使用方法
May 14 Javascript
ionic实现可滑动的tab选项卡切换效果
Apr 15 Javascript
预防网页挂马的方法总结
Nov 03 Javascript
JavaScript之Blob对象类型的具体使用方法
Nov 29 Javascript
js 计数排序的实现示例(升级版)
Jan 12 Javascript
js实现前端界面导航栏下拉列表
Aug 27 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
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
PHP常用技巧总结(附函数代码)
2012/02/04 PHP
Fine Uploader文件上传组件应用介绍
2013/01/06 PHP
Linux编译升级php的详细方法
2013/11/04 PHP
PHP中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
利用javascript查看html源文件
2006/11/08 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
jquery自定义表单验证插件
2016/10/12 Javascript
nodeJs实现基于连接池连接mysql的方法示例
2018/02/10 NodeJs
Node.js 深度调试方法解析
2020/07/28 Javascript
express异步函数异常捕获示例详解
2020/11/30 Javascript
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
python3 kmp 字符串匹配的方法
2018/07/07 Python
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
Python lxml模块的基本使用方法分析
2019/12/21 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
夏尔巴人登珠峰品牌:Sherpa Adventure Gear
2018/02/08 全球购物
发展部经理职责规定
2014/02/22 职场文书
协议书的格式
2014/04/23 职场文书
协议书模板
2014/04/23 职场文书
阅兵口号
2014/06/19 职场文书
争先创优活动总结
2014/08/27 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
党风廉政建设调研报告
2015/01/01 职场文书
拿破仑传读书笔记
2015/07/01 职场文书
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
2022/04/13 Python
python区块链实现简版工作量证明
2022/05/25 Python
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python