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 页面执行时间计算代码
Mar 04 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
Nov 05 Javascript
深入理解javascript作用域和闭包
Sep 23 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
Dec 15 Javascript
JavaScript实现MIPS乘法模拟的方法
Apr 17 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
Oct 08 Javascript
基于Jquery代码实现手风琴菜单
Nov 19 Javascript
Javascript之Date对象详解
Jun 07 Javascript
jQuery实现上传图片前预览效果功能
Aug 03 jQuery
jQuery选择器之子元素过滤选择器
Sep 28 jQuery
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
Feb 14 Javascript
OpenLayers3加载常用控件使用方法详解
Sep 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
德生BCL3000的电路分析和打磨
2021/03/02 无线电
PHP学习之PHP变量
2006/10/09 PHP
用Php编写注册后Email激活验证的实例代码
2013/03/11 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
CodeIgniter常用知识点小结
2016/05/26 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
PHP使用xpath解析XML的方法详解
2017/05/20 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
aspx中利用js实现确认删除代码
2010/07/22 Javascript
顶部缓冲下拉菜单导航特效的JS代码
2013/08/27 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
jQuery插件imgAreaSelect基础讲解
2017/05/26 jQuery
vue实现单选和多选功能
2017/08/11 Javascript
详解10分钟学会vue滚动行为
2017/09/21 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
浅谈JS对象添加getter与setter的5种方法
2018/06/09 Javascript
vue.js编译时给生成的文件增加版本号
2018/09/17 Javascript
node全局变量__dirname与__filename的区别
2019/01/14 Javascript
[04:20]DOTA2-DPC中国联赛 正赛 VG vs LBZS 选手采访 1月19日
2021/03/11 DOTA
python实现百度关键词排名查询
2014/03/30 Python
Python单例模式实例详解
2017/03/01 Python
tensorflow学习笔记之mnist的卷积神经网络实例
2018/04/15 Python
Python列表切片常用操作实例解析
2019/12/16 Python
python处理写入数据代码讲解
2020/10/22 Python
Omio荷兰:预订火车、巴士和机票
2018/11/04 全球购物
简历中个人自我评价范文
2013/12/26 职场文书
财务会计专业自荐书
2014/06/30 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
领导干部群众路线剖析材料
2014/10/09 职场文书
2014年街道办事处工作总结
2014/12/11 职场文书
职工培训工作总结
2015/08/10 职场文书
Nginx配置根据url参数重定向
2022/04/11 Servers
JS中forEach()、map()、every()、some()和filter()的用法
2022/05/11 Javascript