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 相关文章推荐
js获取 type=radio 值的方法
May 09 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
Aug 06 Javascript
jQuery实现移动 和 渐变特效的点击事件
Feb 26 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
Jun 21 Javascript
jQuery为动态生成的select元素添加事件的方法
Aug 29 Javascript
Javascript创建类和对象详解
May 31 Javascript
微信小程序自定义select下拉选项框组件的实现代码
Aug 28 Javascript
详解使用jest对vue项目进行单元测试
Sep 07 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
Dec 05 Javascript
vuex 解决报错this.$store.commit is not a function的方法
Dec 17 Javascript
vue-cli 目录结构详细讲解总结
Jan 15 Javascript
js实现跳一跳小游戏
Jul 31 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
php中将字符串转为HTML的实体引用的一个类
2013/02/03 PHP
PHP中图片等比缩放的实例
2013/03/24 PHP
PHP文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
php中的单引号、双引号和转义字符详解
2017/02/16 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
Maps Javascript
2007/01/22 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
bootstrap监听滚动实现头部跟随滚动
2016/11/08 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
详谈js遍历集合(Array,Map,Set)
2017/04/06 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
2017/11/09 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
2018/08/25 Javascript
微信小程序使用for循环动态渲染页面操作示例
2018/12/25 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
Element Dialog对话框的使用示例
2020/07/26 Javascript
[02:25]DOTA2英雄基础教程 生死判决瘟疫法师
2013/12/06 DOTA
[02:49:21]2019完美盛典全程录像
2019/12/08 DOTA
Python计算两个日期相差天数的方法示例
2017/05/23 Python
如何安装多版本python python2和python3共存以及pip共存
2018/09/18 Python
Python利用matplotlib做图中图及次坐标轴的实例
2019/07/08 Python
matplotlib.pyplot.matshow 矩阵可视化实例
2020/06/16 Python
sqlalchemy实现时间列自动更新教程
2020/09/02 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
2019年.net常见面试问题
2012/02/12 面试题
幼儿园家长评语大全
2014/04/16 职场文书
厨房领班竞聘演讲稿
2014/04/23 职场文书
教师工作失职检讨书
2014/09/18 职场文书
党员批评与自我批评范文
2014/09/23 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
2016幼儿园教师年度考核评语
2015/12/01 职场文书
导游词之襄阳古城
2019/09/27 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python