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脚本控制asp.net下treeview的NodeCheck的实现代码
Mar 02 Javascript
如何使用jquery动态加载js,css文件实现代码
Apr 03 Javascript
jquery map方法使用示例
Apr 23 Javascript
Js+Jq获取URL参数的集中方法示例代码
May 20 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
Nov 04 Javascript
WordPress中利用AJAX技术进行评论提交的实现示例
Jan 12 Javascript
对js eval()函数的一些见解
Aug 15 Javascript
seajs模块之间依赖的加载以及模块的执行
Oct 21 Javascript
详解VUE中v-bind的基本用法
Jul 13 Javascript
web前端vue实现插值文本和输出原始html
Jan 19 Javascript
详解Vue 项目中的几个实用组件(ts)
Oct 29 Javascript
js在HTML的三种引用方式详解
Aug 29 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
长波知识介绍
2021/03/01 无线电
PHP中的正规表达式(一)
2006/10/09 PHP
zend api扩展的php对象的autoload工具
2011/04/18 PHP
php中根据变量的类型 选择echo或dump
2012/07/05 PHP
php获取根域名方法汇总
2014/10/28 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
PHP反射基础知识回顾
2020/09/10 PHP
jQuery随便控制任意div隐藏的方法
2013/06/28 Javascript
利用JavaScript实现新闻滚动效果(实例代码)
2013/11/27 Javascript
jQuery 浮动导航菜单适合购物商品类型的网站
2014/09/09 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
JS不完全国际化&本地化手册 之 理论篇
2016/09/27 Javascript
Bootstrap table简单使用总结
2017/02/15 Javascript
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
[51:14]LGD vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
利用python修改json文件的value方法
2018/12/31 Python
python按照多个条件排序的方法
2019/02/08 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
Html5大文件断点续传实现方法
2015/12/05 HTML / CSS
法国家具及室内配件店:home24
2017/01/21 全球购物
size?荷兰官方网站:英国高级运动鞋精品店
2020/07/24 全球购物
面试后感谢信
2014/02/01 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
吨的认识教学反思
2014/04/27 职场文书
八荣八耻演讲稿
2014/09/15 职场文书
领导干部个人整改措施落实情况汇报
2014/10/29 职场文书
学生病假条范文
2015/08/17 职场文书
微信早安问候语
2015/11/10 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书