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 相关文章推荐
js实现图片轮换效果代码
Apr 16 Javascript
jQuery中[attribute]选择器用法实例
Dec 31 Javascript
jquery.mobile 共同布局遇到的问题小结
Feb 10 Javascript
JS中产生标识符方式的演变
Jun 12 Javascript
在AngularJS中使用AJAX的方法
Jun 17 Javascript
javascript实现简易计算器
Feb 01 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
Mar 25 Javascript
JAVA中截取字符串substring用法详解
Apr 14 Javascript
AngularJs每天学习之总体介绍
Aug 07 Javascript
基于JavaScript实现表格滚动分页
Nov 22 Javascript
TypeScript类型声明书写详解
Aug 28 Javascript
uni-app使用微信小程序云函数的步骤示例
May 22 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
ftp类(example.php)
2006/10/09 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
JavaScript arguments 多参传值函数
2010/10/24 Javascript
JS左右无缝滚动(一般方法+面向对象方法)
2012/08/17 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
vue-loader教程介绍
2017/06/14 Javascript
React 实现拖拽功能的示例代码
2019/01/06 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
2019/04/29 Javascript
Vue的生命周期操作示例
2019/09/17 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
Windows下python3.6.4安装教程
2018/07/31 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
Python命令行参数定义及需要注意的地方
2020/11/30 Python
详解CSS的border边框属性及其在CSS3中的新特性
2016/05/10 HTML / CSS
【HTML5】Canvas绘制简单图片教程
2016/05/13 HTML / CSS
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
马来西亚在线购物:POPLOOK.com
2019/12/09 全球购物
挂职思想汇报
2013/12/31 职场文书
校园十佳歌手策划书
2014/01/22 职场文书
大学生毕业鉴定
2014/01/31 职场文书
财务科科长岗位职责
2014/03/10 职场文书
法制宣传标语
2014/06/23 职场文书
物业管理委托协议(2篇)
2014/09/23 职场文书
2015学校年度工作总结
2015/05/11 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL
springboot创建的web项目整合Quartz框架的项目实践
2022/06/21 Java/Android