JavaScript高级程序设计之变量与作用域


Posted in Javascript onNovember 17, 2021

1、原始值与引用值

6种简单数据类型的值都是原始值, 原始值通过变量赋值给另一个变量时,会复制一个出一个新的值,两者相互独立。

let num1 = 5
let num2 = num1

JavaScript高级程序设计之变量与作用域

引用值通过变量赋值给另一个变量时,也会复制一个值,这个值其实是一个指针(引用),该指针指向的还是同一个对象。

let obj1 = new Object()

let obj2 = obj1

JavaScript高级程序设计之变量与作用域

既然是指向同一个引用对象,那么给obj1添加属性,也会作用到obj2身上去。

obj1.name = "zhangsan"

console.log(obj2.name) // zhangsan

函数在传参的过程中,只有一种情况就是按照值传递,这跟变量的赋值是一个样。只不过,对于引用值,传递的值是指针,但指针指向的还是同一个对象。

2、instanceof

typeof 一般适合用来判断原始值,对于引用值并不使用,因为 null 和 其它对象返回的都是 object,具体是什么类型的对象并不知道。 而判断引用值具体是什么类型对象最好的方法就是用 instanceof 表达式。

console.log(1 instanceof Object)  //false
let obj = new Object();
console.log(obj instanceof Object)  //true
console.log(null instanceof Object)  //false



function fun(){
    //
}
console.log(fun instanceof Object)  //true
console.log(fun instanceof Function) //true

console.log([] instanceof Object) //true
console.log([] instanceof Array) //true

3、作用域

变量的作用范围称为作用域或者执行上下文,变量脱离了该作用域不再可见,所有系统查找一个变量时是有一个作用域链的。先从引用该变量最近的块作用域找,没找到继续往外局部作用域找,再没找到就在全局作用域中查找。如果还没找到就会报错 ReferenceError: xxx is not defined

到此这篇关于JavaScript高级程序设计之变量与作用域的文章就介绍到这了,更多相关JavaScript变量与作用域内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript 解析后的xml对象的读取方法细解
Jul 25 Javascript
斜45度寻路实现函数
Aug 20 Javascript
打印json对象的内容及JSON.stringify函数应用
Mar 29 Javascript
jquery带下拉菜单和焦点图代码分享
Aug 24 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
Oct 20 Javascript
javascript Function函数理解与实战
Dec 01 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
Jul 25 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
Aug 08 jQuery
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
Aug 23 Javascript
vue组件内部引入外部js文件的方法
Jan 18 Javascript
Vue实现点击箭头上下移动效果
Jun 11 Javascript
微信小程序实现锚点跳转
Nov 23 Javascript
javascript对象3个属性特征
详细聊聊浏览器是如何看闭包的
Vue3中的Refs和Ref详情
Nov 11 #Vue.js
react 路由Link配置详解
Nov 11 #Javascript
React Fragment介绍与使用详解
Nov 11 #Javascript
在js中修改html body的样式
Nov 11 #Javascript
用JS创建一个录屏功能
You might like
PHPMailer邮件类利用smtp.163.com发送邮件方法
2008/09/11 PHP
PHP var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
PHP中上传多个文件的表单设计例子
2014/11/19 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
php for 循环使用的简单实例
2016/06/02 PHP
thinkPHP中U方法加密传递参数功能示例
2018/05/29 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
前后台交互过程中json格式如何解析以及如何生成
2012/12/26 Javascript
Javascript图像处理—亮度对比度应用案例
2013/01/03 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
2015/10/14 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
Vuex提升学习篇
2018/01/11 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
[05:06]TI4西雅图DOTA2前线报道 海涛密探LGD训练
2014/07/09 DOTA
[01:09:24]Ti4开幕式
2014/07/19 DOTA
python中查看变量内存地址的方法
2015/05/05 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
企业治理工作自我评价
2013/09/26 职场文书
大专生自我评价
2014/01/28 职场文书
《老王》教学反思
2014/02/23 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
检讨书范文500字
2015/01/28 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
十月围城观后感
2015/06/08 职场文书
小学教师教学随笔
2015/08/14 职场文书
党员理论学习心得体会
2016/01/21 职场文书
js实现自动锁屏功能
2021/06/02 Javascript
python疲劳驾驶困倦低头检测功能的实现
2022/04/04 Python
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript