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 相关文章推荐
XmlUtils JS操作XML工具类
Oct 01 Javascript
jquery实现居中弹出层代码
Aug 25 Javascript
javascript写的日历类(基于pj)
Dec 28 Javascript
jQuery判断iframe中元素是否存在的方法
May 11 Javascript
动态获取复选框checkbox选中个数的jquery代码
Jun 25 Javascript
js onclick事件传参讲解
Nov 06 Javascript
JS控制图片等比例缩放的示例代码
Dec 24 Javascript
文件上传,iframe跨域数据提交的实现
Nov 18 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
Apr 01 Javascript
vue脚手架搭建项目的兼容性配置详解
Jul 17 Javascript
原生js通过一行代码实现简易轮播图
Jun 05 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
Nov 18 jQuery
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
基于CI框架的微信网页授权库示例
2016/11/25 PHP
thinkPHP简单调用函数与类库的方法
2017/03/15 PHP
PHP 爬取网页的主要方法
2018/07/13 PHP
JavaScript定义类的几种方式总结
2014/01/06 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
2014/05/18 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
javascript基础知识
2016/06/07 Javascript
JavaScript基于原型链的继承
2016/06/22 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
基于Axios 常用的请求方法别名(详解)
2018/03/13 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
python 中文乱码问题深入分析
2011/03/13 Python
Linux下为不同版本python安装第三方库
2016/08/31 Python
python实现推箱子游戏
2020/03/25 Python
基于Python的Post请求数据爬取的方法详解
2019/06/14 Python
对DJango视图(views)和模版(templates)的使用详解
2019/07/17 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
python scrapy爬虫代码及填坑
2019/08/12 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
python并发爬虫实用工具tomorrow实用解析
2019/09/25 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
C/C++有关内存的思考题
2015/12/04 面试题
大学新生入学教育方案
2014/05/16 职场文书
企业宗旨标语
2014/06/10 职场文书
战友聚会策划方案
2014/06/13 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript