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 面试题随笔
Mar 31 Javascript
Js操作Select大全(取值、设置选中等等)
Oct 29 Javascript
聊一聊jQuery插件uploadify使用方法
Aug 24 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
Dec 16 Javascript
谈谈Vue.js——vue-resource全攻略
Jan 16 Javascript
微信小程序多音频播放进度条问题
Aug 28 Javascript
解决JS表单验证只有第一个IF起作用的问题
Dec 04 Javascript
JS执行控制之节流模式实例分析
Dec 21 Javascript
Node.js之readline模块的使用详解
Mar 25 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
Sep 25 Javascript
Node在Controller层进行数据校验的过程详解
Aug 28 Javascript
js 实现Material UI点击涟漪效果示例
Sep 23 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
如何将数据从文本导入到mysql
2006/10/09 PHP
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
javascript获取当前鼠标坐标的方法
2015/01/10 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
2016/11/02 Javascript
Jquery Easyui表单组件Form使用详解(30)
2016/12/19 Javascript
JS实现Ajax的方法分析
2016/12/20 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
bootstrap table实现单击单元格可编辑功能
2017/03/28 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
Vue中对iframe实现keep alive无刷新的方法
2019/07/23 Javascript
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
python基础教程之数字处理(math)模块详解
2014/03/25 Python
python控制台中实现进度条功能
2015/11/10 Python
详解Python中heapq模块的用法
2016/06/28 Python
Python实现的tcp端口检测操作示例
2018/07/24 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
基于opencv实现简单画板功能
2020/08/02 Python
Python hashlib模块的使用示例
2020/10/09 Python
python安装sklearn模块的方法详解
2020/11/28 Python
荷兰本土平价百货:HEMA
2017/10/23 全球购物
欧洲有机婴儿食品最大的市场:Organic Baby Food(供美国和加拿大)
2018/03/28 全球购物
餐饮业创业计划书范文
2014/01/06 职场文书
公司庆典邀请函范文
2014/01/13 职场文书
电子商务专业求职信
2014/03/08 职场文书
资源环境与城乡规划管理专业自荐书
2014/09/26 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
Win11更新失败并提示0xc1900101
2022/04/19 数码科技