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 相关文章推荐
不用锚点也可以平滑滚动到页面的指定位置实现代码
May 08 Javascript
jquery改变disabled的boolean状态的三种方法
Dec 13 Javascript
javascript中alert()与console.log()的区别
Aug 26 Javascript
使用递归遍历对象获得value值的实现方法
Jun 14 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
Sep 14 Javascript
JS实现间歇滚动的运动效果实例
Dec 22 Javascript
AugularJS从入门到实践(必看篇)
Jul 10 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
Mar 13 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
Aug 13 Javascript
在Vant的基础上封装下拉日期控件的代码示例
Dec 05 Javascript
基于JavaScript获取url参数2种方法
Apr 17 Javascript
ant design 日期格式化的实现
Oct 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
yii操作session实例简介
2014/07/31 PHP
php中简单的对称加密算法实现
2017/01/05 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
jquery复选框CHECKBOX全选、反选
2008/08/30 Javascript
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
JQery jstree 大数据量问题解决方法
2010/03/09 Javascript
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
2010/06/02 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
2012/02/07 Javascript
JS中怎样判断undefined(比较不错的方法)
2014/03/27 Javascript
用js传递value默认值的示例代码
2014/09/11 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
Javascript实现汉字和拼音互转的终极方案
2016/10/19 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
vue项目首屏加载时间优化实战
2019/04/23 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
2019/09/21 Javascript
Python中使用不同编码读写txt文件详解
2015/05/28 Python
Python 实现简单的shell sed替换功能(实例讲解)
2017/09/29 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
Python离线安装PIL 模块的方法
2019/01/08 Python
python 实现GUI(图形用户界面)编程详解
2019/07/17 Python
django 通过URL访问上传的文件方法
2019/07/28 Python
python 发送json数据操作实例分析
2019/10/15 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
python ssh 执行shell命令的示例
2020/09/29 Python
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
澳大利亚百货公司:David Jones
2018/02/08 全球购物
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
汽车专业毕业生推荐信
2013/11/12 职场文书
销售会计岗位职责
2014/03/15 职场文书
校庆活动策划方案
2014/06/05 职场文书
婚礼答谢礼品
2015/01/20 职场文书
党员个人总结自评
2015/02/14 职场文书
SQL Server远程连接的设置步骤(图文)
2022/03/23 SQL Server