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 面向对象特性
Dec 28 Javascript
JavaScript 通过模式匹配实现重载
Aug 12 Javascript
使图片旋转的3种解决方案
Nov 21 Javascript
js 弹出框只弹一次(二次修改之后的)
Nov 26 Javascript
js怎么判断flash swf文件是否加载完毕
Aug 14 Javascript
浅谈Javascript中深复制
Dec 01 Javascript
JS与jQ读取xml文件的方法
Dec 08 Javascript
深入解析Backbone.js框架的依赖库Underscore.js的作用
May 07 Javascript
Javascript操作表单实例讲解(下)
Jun 20 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
Jan 10 Javascript
微信小程序之绑定点击事件实例详解
Jul 07 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
Sep 27 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
删除无限级目录与文件代码共享
2006/07/12 PHP
PHP 读取和修改大文件的某行内容的代码
2009/10/30 PHP
PHP 截取字符串专题集合
2010/08/19 PHP
3种php生成唯一id的方法
2015/11/23 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
页面右下角弹出提示框示例代码js版
2013/08/02 Javascript
jquery鼠标滑过提示title具体实现代码
2013/08/06 Javascript
showModelDialog弹出文件下载窗口的使用示例
2013/11/19 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
微信小程序实现tab和swiper切换结合效果
2020/07/17 Javascript
浅谈vue引用静态资源需要注意的事项
2018/09/28 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
[01:21]2018DOTA2亚洲邀请赛4.5采访 打DOTA2也能有女朋友?
2018/04/06 DOTA
详解numpy矩阵的创建与数据类型
2019/10/18 Python
Tensorflow不支持AVX2指令集的解决方法
2020/02/03 Python
Python多线程Threading、子线程与守护线程实例详解
2020/03/24 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
皮尔·卡丹巴西官方商店:Pierre Cardin
2017/07/21 全球购物
爱尔兰灯和灯具网上商店:Lights.ie
2018/03/26 全球购物
英国Boots旗下太阳镜网站:Boots Designer Sunglasses
2018/07/07 全球购物
制冷与电控专业应届生求职信
2013/11/11 职场文书
幼儿园中秋节活动方案
2014/02/06 职场文书
安全教育实施方案
2014/03/02 职场文书
网站美工岗位职责
2014/04/02 职场文书
我的理想演讲稿
2014/04/30 职场文书
理财学专业自荐书
2014/06/28 职场文书
学生穿着不得体检讨书
2014/10/12 职场文书
离婚协议书范文2014
2014/10/16 职场文书
小学优秀教师材料
2014/12/15 职场文书
《只有一个地球》教学反思
2016/02/16 职场文书
python 爬取豆瓣网页的示例
2021/04/13 Python