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 相关文章推荐
jQuery教程 $()包装函数来实现数组元素分页效果
Aug 13 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
Nov 23 Javascript
js对象内部访问this修饰的成员函数示例
Apr 27 Javascript
javascript实现无限级select联动菜单
Jan 02 Javascript
详细分析JavaScript变量类型
Jul 08 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
Nov 29 Javascript
javascript中利用柯里化函数实现bind方法
Apr 29 Javascript
js实现登录验证码
Dec 22 Javascript
详解node.js平台下Express的session与cookie模块包的配置
Apr 26 Javascript
Vue响应式原理深入解析及注意事项
Dec 11 Javascript
iview table高度动态设置方法
Mar 14 Javascript
浅析vue给不同环境配置不同打包命令
Aug 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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
桌面中心(二)数据库写入
2006/10/09 PHP
php操作access数据库的方法详解
2017/02/22 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
关于PHP求解三数之和问题详析
2020/11/09 PHP
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
ExtJS中设置下拉列表框不可编辑的方法
2014/05/07 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
2014/10/23 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
2016/07/06 Javascript
微信小程序 详解页面跳转与返回并回传数据
2017/02/13 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
2017/04/19 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
2019/11/20 Javascript
[01:03:38]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS CIS
2014/05/22 DOTA
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
python实现最大子序和(分治+动态规划)
2019/07/05 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
2019/11/30 Python
python 多维高斯分布数据生成方式
2019/12/09 Python
html5 外链式实现加减乘除的代码
2019/09/04 HTML / CSS
AmazeUI 评论列表的实现示例
2020/08/13 HTML / CSS
挪威手表购物网站:Klokker
2016/09/19 全球购物
英国最大的化装舞会服装网站:Fancydress.com
2017/08/15 全球购物
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
TripAdvisor印尼站:全球领先的旅游网站
2018/03/15 全球购物
COACH德国官方网站:纽约现代奢侈品牌,1941年
2018/06/09 全球购物
中专毕业生自荐信
2013/11/16 职场文书
工作检讨书范文
2015/01/23 职场文书