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 相关文章推荐
基于PHP+Jquery制作的可编辑的表格的代码
Apr 10 Javascript
Textbox控件注册回车事件及触发按钮提交事件具体实现
Mar 04 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
Jul 22 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
Sep 05 Javascript
探讨JavaScript标签位置的存放与功能有无关系
Jan 15 Javascript
基于Javascript实现倒计时功能
Feb 22 Javascript
浅析Angular2子模块以及异步加载
Apr 24 Javascript
angular2+node.js express打包部署的实战
Jul 27 Javascript
Vue中JS动画与Velocity.js的结合使用
Feb 13 Javascript
vue.js实现图书管理功能
Sep 24 Javascript
vue.config.js中配置Vue的路径别名的方法
Feb 11 Javascript
原生js+css实现tab切换功能
Sep 17 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
php读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
pjblog中的UBBCode.js
2007/04/25 Javascript
一个tab标签切换效果代码
2009/03/27 Javascript
3种不同方式的焦点图轮播特效分享
2013/10/30 Javascript
window.location 对象所包含的属性
2014/10/10 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
2015/11/30 Javascript
基于javascript实现文字无缝滚动效果
2016/03/22 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
详解react-router如何实现按需加载
2017/06/15 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
使用Angular-CLI构建NPM包的方法
2018/09/07 Javascript
Vue.js组件实现选项卡以及切换特效
2019/07/24 Javascript
layui table 表格模板按钮的实例代码
2019/09/21 Javascript
Vue axios获取token临时令牌封装案例
2020/09/11 Javascript
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
Python基于pillow判断图片完整性的方法
2016/09/18 Python
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
快速查询Python文档方法分享
2017/12/27 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
使用Python pip怎么升级pip
2020/08/11 Python
python中time、datetime模块的使用
2020/12/14 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
玩转CSS3色彩
2010/01/16 HTML / CSS
HTML5拖放功能_动力节点Java学院整理
2017/07/13 HTML / CSS
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
优秀毕业生求职信
2014/06/05 职场文书
德能勤绩廉个人总结
2015/02/14 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js
Javascript的promise,async和await的区别详解
2022/03/24 Javascript