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 相关文章推荐
jQuery 表格工具集
Apr 25 Javascript
用jquery与css打造个性化的单选框和复选框
Oct 20 Javascript
zShowBox 图片放大展示jquery版 兼容性
Sep 24 Javascript
dedecms页面如何获取会员状态的实例代码
Mar 15 Javascript
jquery解析XML及获取XML节点名称的实现代码
May 18 Javascript
Bootstrap框架实现广告轮播效果
Nov 28 Javascript
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
Sep 02 Javascript
vue.js语法及常用指令
Oct 29 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
Apr 26 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
Mar 06 Javascript
vue实现点击按钮切换背景颜色的示例代码
Jun 23 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
Jul 21 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
让的PHP代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
解析php中array_merge与array+array的区别
2013/06/21 PHP
ThinkPHP处理Ajax返回的方法
2014/11/22 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
用YUI做了个标签浏览效果
2007/02/20 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
jQuery 浮动导航菜单适合购物商品类型的网站
2014/09/09 Javascript
JS实现OCX控件的事件响应示例
2014/09/17 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
window.open()实现post传递参数
2015/03/12 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
学习JavaScript设计模式之迭代器模式
2016/01/19 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
jquery广告无缝轮播实例
2017/01/05 Javascript
package.json文件配置详解
2017/06/15 Javascript
Angularjs 事件指令详细整理
2017/07/27 Javascript
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
vue的三种图片引入方式代码实例
2019/11/19 Javascript
Python切片工具pillow用法示例
2018/03/30 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
Python图像处理之颜色的定义与使用分析
2019/01/03 Python
简单了解python filter、map、reduce的区别
2020/01/14 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
美特斯邦威官方商城:邦购网
2016/10/13 全球购物
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
党员组织关系介绍信
2014/02/13 职场文书
四风专项整治工作情况汇报
2014/10/28 职场文书
文明家庭事迹材料
2014/12/20 职场文书
小学教师教育随笔
2015/08/14 职场文书
聘任通知书
2015/09/21 职场文书
Django rest framework如何自定义用户表
2021/06/09 Python
纯html+css实现打字效果
2021/08/02 HTML / CSS