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 判断日期格式是否正确的实现代码
Jul 04 Javascript
$(document).ready(function() {})不执行初始化脚本
Jun 19 Javascript
javascript弹出窗口实现代码
Nov 12 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
May 30 Javascript
jQuery实现的分页功能示例
Jan 22 Javascript
微信小程序 图片上传实例详解
May 05 Javascript
vue 运用mock数据的示例代码
Nov 07 Javascript
Vue实现点击时间获取时间段查询功能
Aug 21 Javascript
微信小程序保存图片到相册权限设置
Apr 09 Javascript
AJAX XMLHttpRequest对象创建使用详解
Aug 20 Javascript
详解React路由传参方法汇总记录
Nov 29 Javascript
JS+JQuery实现无缝连接轮播图
Dec 30 jQuery
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管理nginx虚拟主机shell脚本实例
2014/11/19 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
2014/12/17 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
建立良好体验度的Web注册系统ajax
2007/07/09 Javascript
Mootools 1.2教程 滑动效果(Slide)
2009/09/15 Javascript
JQuery浮动DIV提示信息并自动隐藏的代码
2010/08/29 Javascript
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
2014/04/29 Javascript
浅谈Javascript中的Function与Object
2015/01/26 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
js仿淘宝商品放大预览功能
2017/03/15 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
2017/07/14 Javascript
jQuery实现所有验证通过方可提交的表单验证
2017/11/21 jQuery
nodejs 最新版安装npm 的使用详解
2018/01/18 NodeJs
快速解决Vue项目在IE浏览器中显示空白的问题
2018/09/04 Javascript
JS实现获取数组中最大值或最小值功能示例
2019/03/02 Javascript
微信小程序入口场景的问题集合与相关解决方法
2019/06/26 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
跟老齐学Python之有容乃大的list(4)
2014/09/28 Python
Python 基础教程之str和repr的详解
2017/08/20 Python
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
Pyqt5自适应布局实例
2019/12/13 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
如何利用python 读取配置文件
2021/01/06 Python
应征英语教师求职信
2013/11/27 职场文书
关于人生的感言
2014/01/17 职场文书
文明学生事迹材料
2014/01/29 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
2015年招聘工作总结
2014/12/12 职场文书
刑事法律意见书
2015/06/04 职场文书
2019财务毕业实习报告
2019/06/27 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server
Java获取字符串编码格式实现思路
2022/09/23 Java/Android