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技术技巧大全(五)
Jan 22 Javascript
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
Jan 08 Javascript
javascript重写alert方法的实例代码
Mar 29 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
Apr 18 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
Dec 26 Javascript
详解Vue使用 vue-cli 搭建项目
Apr 20 Javascript
AngularJS常见过滤器用法实例总结
Jul 06 Javascript
Vuejs中使用markdown服务器端渲染的示例
Nov 22 Javascript
webpack多入口文件页面打包配置详解
Jan 09 Javascript
Vue中Axios从远程/后台读取数据
Jan 21 Javascript
vue通过接口直接下载java生成好的Excel表格案例
Oct 26 Javascript
手写Vue源码之数据劫持示例详解
Jan 04 Vue.js
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
Discuz! Passport 通行证整合
2008/03/27 PHP
php中邮箱地址正则表达式实现与详解
2012/04/24 PHP
php实现excel中rank函数功能的方法
2015/01/20 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
php实现分页功能的详细实例方法
2019/09/29 PHP
tagName的使用,留一笔
2006/06/26 Javascript
javascript 类方法定义还是有点区别
2009/04/15 Javascript
在javascript将NodeList作为Array数组处理的方法
2010/07/09 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
2014/03/17 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
JavaScript的this关键字的理解
2016/06/18 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
2016/08/10 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
深入理解Python 代码优化详解
2014/10/27 Python
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
深入解析Python中的urllib2模块
2015/11/13 Python
Python 动态导入对象,importlib.import_module()的使用方法
2019/08/28 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
Scrapy爬虫文件批量运行的实现
2020/09/30 Python
详解html5 canvas 微信海报分享(个人爬坑)
2018/01/12 HTML / CSS
HTML5中的websocket实现直播功能
2018/05/21 HTML / CSS
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
2014年道德讲堂实施方案
2014/03/05 职场文书
2014学习全国两会精神心得体会2000字
2014/03/11 职场文书
公司总经理岗位职责
2014/03/15 职场文书
领导干部群众路线教育实践活动剖析材料
2014/10/10 职场文书
语文教师求职信范文
2015/03/20 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
python pygame 开发五子棋双人对弈
2022/05/02 Python