JS中的变量作用域(console版)


Posted in Javascript onJuly 18, 2020

作用域说明:指一个变量的作用范围

1.全局作用域

(1) 全局作用域在页面打开时被创建,页面关闭时被销毁
(2) 编写在script标签中的变量和函数,作用域为全局,在页面的任意位置都可以访问到
(3) 在全局作用域中有全局对象window,代表一个浏览器窗口,由浏览器创建,可以直接调用
(4) 全局作用域中声明的变量和函数会作为window对象的属性和方法保存

var a = 10;
b = 20;
function an(){
  console.log('an')
}
var bn = function(){
  console.log('bn')
}
console.log(window)

如图,变量a,b和函数an,bn都保存在window对象上

JS中的变量作用域(console版)

(5) window对象的属性和方法可以直接调用,如window.an() 可以写为 an()

2.函数作用域:

(1) 调用函数时,函数作用域被创建,函数执行完毕,函数作用域被销毁

function an(){
    var s = 'an'
    console.log(s);
}
//an();

此时函数an并没有执行,作用域没有创建,当函数执行时,作用域创建,输出结果an

an();

JS中的变量作用域(console版)

(2) 每调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的

(3) 在函数作用域中可以访问到全局作用域的变量,在函数外无法访问到函数作用域内的变量

function an(){
  var s = 'an'
  console.log(s);
}
an();
console.log(s); // 此时,程序会从当前作用域和上级作用域及以上作用域中寻找变量s,并不会去下级作用域中寻找

JS中的变量作用域(console版)

(4) 在函数作用域中访问变量、函数时,会先在自身作用域中寻找,若没有找到,则会到函数的上一级作用域中寻找,一直到全局作用域
(5) 在函数作用域中也有声明提前的特性,对于变量和函数都起作用,此时函数作用域相当于一个小的全局作用域,详细声明提前请看声明提前部分

an();
bn();
function an(){
    var s = 'an'
    console.log(s);
}
var bn = function(){
    console.log('bn')
}

下图就结果中,an()可以正常执行,函数an()提升并创建了,函数bn的变量名提升了,但是为赋值,此时bn不是函数

JS中的变量作用域(console版)

(6) 在函数作用域中,不使用变量关键字声明的变量,在赋值时会往上一级作用域寻找已经声明的同名变量,直到全局作用域时还没找到,则会成为window的属性

an(); // 输出结果 bn
function an(){
  var b = 'bn';
  function bn(){
    console.log(b); 
	b = 'bn2';  // b会往上一级寻找已经声明的同名变量,并赋值,直到全局作用域时还没找到,则会成为window的属性
  }
  bn();
  console.log(b); // 输出 bn2
}

(7) 在函数中定义形参,等同于声明变量

function an(name){
  console.log(name); // 输出 undefined
}
an();

等同于

function an(){
  var name
  console.log(name); // 输出 undefined
}
an();

到此这篇关于JS中作用域以及变量范围的文章就介绍到这了,更多相关JS作用域内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript setTimeout和setInterval的使用方法 说明
Mar 25 Javascript
关于COOKIE个数与大小的问题
Jan 17 Javascript
前台js调用后台方法示例
Dec 02 Javascript
js中的caller和callee属性介绍和例子
Jun 07 Javascript
javascript判断数组内是否重复的方法
Apr 21 Javascript
js实现密码强度检测【附示例】
Mar 30 Javascript
jquery遍历标签中自定义的属性方法
Sep 17 Javascript
js实现PC端根据IP定位当前城市地理位置
Feb 22 Javascript
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
全面解析vue router 基本使用(动态路由,嵌套路由)
Sep 02 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
Aug 18 Javascript
JS实现选项卡插件的两种写法(jQuery和class)
Dec 30 jQuery
js里面的变量范围分享
Jul 18 #Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
Jul 18 #Javascript
深入理解 ES6中的 Reflect用法
Jul 18 #Javascript
详谈Object.defineProperty 及实现数据双向绑定
Jul 18 #Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
Jul 18 #Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
Jul 18 #Javascript
完美解决通过IP地址访问VUE项目的问题
Jul 18 #Javascript
You might like
腾讯QQ php程序员面试题目整理
2010/06/08 PHP
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
php导出word格式数据的代码实例
2013/11/25 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
2014/04/30 PHP
laravel安装和配置教程
2014/10/29 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
JavaScript高级程序设计(第3版)学习笔记 概述
2012/10/11 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
js跳转页面方法总结
2014/01/29 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
2015/06/11 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
2016/01/18 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
基于jQuery实现仿百度首页选项卡切换效果
2016/05/29 Javascript
纯js的右下角弹窗实例
2017/03/12 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
es6学习笔记之Async函数基本教程
2017/05/11 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
[01:01:52]完美世界DOTA2联赛PWL S2 GXR vs Magma 第二场 11.25
2020/11/26 DOTA
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
跟老齐学Python之??碌某?? target=
2014/09/12 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
2017/09/26 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
python代码能做成软件吗
2020/07/24 Python
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
欧洲、亚洲、非洲和拉丁美洲的度假套餐:Great Value Vacations
2019/03/30 全球购物
大学生咖啡店创业计划书
2014/01/21 职场文书
《值日生》教学反思
2014/02/17 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
个人汇报材料范文
2014/12/30 职场文书
世界环境日活动总结
2015/02/11 职场文书