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自定义DateDiff函数(兼容所有浏览器)
Mar 01 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
Dec 26 Javascript
JavaScript里 ==与===区别详解
Aug 16 Javascript
Angular ng-repeat 对象和数组遍历实例
Sep 14 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
Dec 02 Javascript
通过BootStrap-select插件 js jQuery控制select属性变化
Jan 03 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
May 18 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
Jan 09 Javascript
js中call()和apply()改变指针问题的讲解
Jan 17 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
Apr 29 Javascript
Vue 幸运大转盘实现思路详解
May 06 Javascript
JS事件循环机制event loop宏任务微任务原理解析
Aug 04 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缓存类代码(附详细说明)
2011/06/09 PHP
php引用返回与取消引用的详解
2013/06/08 PHP
PHP对文件进行加锁、解锁实例
2015/01/23 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
php的laravel框架快速集成微信登录的方法
2016/12/12 PHP
用JavaScript隐藏控件的方法
2009/09/21 Javascript
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
JavaScript中的console.time()函数详细介绍
2014/12/29 Javascript
JavaScript判断对象是否为数组
2015/12/22 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
详解mpvue开发小程序小总结
2018/07/25 Javascript
Element Card 卡片的具体使用
2020/07/26 Javascript
python3.0 字典key排序
2008/12/24 Python
Python操作Access数据库基本步骤分析
2016/09/19 Python
Python中标准模块importlib详解
2017/04/16 Python
python快速建立超简单的web服务器的实现方法
2018/02/17 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
Python的几种主动结束程序方式
2019/11/22 Python
python模块如何查看
2020/06/16 Python
Python如何对XML 解析
2020/06/28 Python
通过css3的filter滤镜改变png图片的颜色的示例代码
2020/05/06 HTML / CSS
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
什么是触发器(trigger)? 触发器有什么作用?
2013/09/18 面试题
村党支部群众路线教育实践活动对照检查材料
2014/09/26 职场文书
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
工程承包协议书
2014/10/20 职场文书
高考升学宴答谢词
2015/01/20 职场文书
青年联谊会致辞
2015/07/31 职场文书
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS
Nginx配置之禁止指定IP访问
2022/05/02 Servers
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS