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 相关文章推荐
游戏人文件夹程序 ver 3.0
Jul 14 Javascript
javascript 对表格的行和列都能加亮显示
Dec 26 Javascript
一款由jquery实现的整屏切换特效
Sep 15 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
Oct 26 Javascript
jquery中表单 多选框的一种巧妙写法
Sep 06 Javascript
JS原型链 详解及示例代码
Sep 06 Javascript
js脚本编写简单刷票投票系统
Jun 27 Javascript
CSS3+JavaScript实现翻页幻灯片效果
Jun 28 Javascript
关于TypeScript中import JSON的正确姿势详解
Jul 25 Javascript
解决vue的 v-for 循环中图片加载路径问题
Sep 03 Javascript
JS实现排行榜文字向上滚动轮播效果
Nov 26 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
Apr 22 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支持页面回退的两种方法[转]
2007/02/14 PHP
Discuz! Passport 通行证整合
2008/03/27 PHP
PHP逐行输出(ob_flush与flush的组合)
2012/02/04 PHP
PHP的password_hash()使用实例
2014/03/17 PHP
PHP中调用SVN命令更新网站方法
2015/01/07 PHP
PHP信号处理机制的操作代码讲解
2019/04/19 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
JS 强制设为首页的代码
2009/01/31 Javascript
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
关于js new Date() 出现NaN 的分析
2012/10/23 Javascript
JavaScript编程中容易出BUG的几点小知识
2015/01/31 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
Scala解析Json字符串的实例详解
2017/10/11 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
2019/07/10 Javascript
vuejs中父子组件之间通信方法实例详解
2020/01/17 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
windows10系统中安装python3.x+scrapy教程
2016/11/08 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
Python模拟三级菜单效果
2017/09/11 Python
python顺序的读取文件夹下名称有序的文件方法
2018/07/11 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
python打包成so文件过程解析
2019/09/28 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
简历自荐信
2013/12/02 职场文书
建筑施工安全责任书
2014/07/24 职场文书
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang
python 单机五子棋对战游戏
2022/04/28 Python