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 相关文章推荐
【消息提示组件】,兼容IE6/7&&FF2
Sep 04 Javascript
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
Jun 02 Javascript
数组方法解决JS字符串连接性能问题有争议
Jan 12 Javascript
使用Math.floor与Math.random取随机整数的方法详解
May 07 Javascript
jQuery对html元素取值与赋值的方法
Nov 20 Javascript
js输入框邮箱自动提示功能代码实现
Dec 10 Javascript
js数组与字符串的相互转换方法
Jul 09 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
Aug 05 Javascript
JavaScript中关于base64的一些事
May 06 Javascript
vue.config.js常用配置详解
Nov 14 Javascript
JavaScript实现简易聊天对话框(加滚动条)
Feb 10 Javascript
js 闭包深入理解与实例分析
Mar 19 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中Memcache操作类及用法实例
2014/12/12 PHP
如何直接访问php实例对象中的private属性详解
2017/10/12 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
laravel 时间格式转时间戳的例子
2019/10/11 PHP
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
javascript自定义的addClass()方法
2014/05/28 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
使用jquery获取url以及jquery获取url参数的实现方法
2016/05/25 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
Html中 IFrame的用法及注意点
2016/12/22 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
jQuery Plupload上传插件的使用
2017/04/19 jQuery
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
JS移动端/H5同时选择多张图片上传并使用canvas压缩图片
2017/06/20 Javascript
javacript replace 正则取字符串中的值并替换【推荐】
2018/09/13 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
2019/12/04 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
浅析vue中的nextTick
2020/12/28 Vue.js
python fabric使用笔记
2015/05/09 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
2017/01/20 Python
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
python实现画出e指数函数的图像
2019/11/21 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例
2020/03/06 Python
Python中的整除和取模实例
2020/06/03 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
美国时尚大码女装购物网站:Avenue
2019/05/24 全球购物
防汛通知
2015/04/25 职场文书
2015年高校就业工作总结
2015/05/04 职场文书
大学生党课心得体会
2016/01/07 职场文书
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL
python数字类型和占位符详情
2022/03/13 Python
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
2022/04/06 Vue.js
Android Studio 计算器开发
2022/05/20 Java/Android