解析的第二点有疑问

解析的第二点有疑问

var声明的变量只在当前作用域内有效

不是说var声明的变量就是全局变量吗?它还分什么当前作用域?即使在花括号里面声明的不一样是挂在window上的全局变量吗?在外面不还是能访问到里面变化后的值?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,没有错哦,老师这里说的是不在函数内部, 也就是下图所示的情况

没有写在函数内部的for循环,声明的i和a都属于全局变量

http://img1.sycdn.imooc.com//climg/5eb2acb90954f4d007560184.jpg

没有写在函数内部的if语句,声明的c属于全局变量

http://img1.sycdn.imooc.com//climg/5eb2acf6094ca45b04700266.jpg

对比下,如果将上面的for循环和if语句写在函数内部的,那么i, a和c都属于局部变量了。

http://img1.sycdn.imooc.com//climg/5eb2ad48098841e809400592.jpg

同学可以测试理解下,祝学习愉快~

  • Aurora_Meteor 提问者 #1
    那是不是可以简单的概括为:只要声明的那个变量向上级找可以找到function,它就是在函数内部,是局部作用域里的局部变量;只要它往上找不到function,它就是全局作用域里的全局变量?
    2020-05-06 21:02:22
  • 好帮手慕慕子 回复 提问者 Aurora_Meteor #2
    同学你好,可以这么理解,祝学习愉快~
    2020-05-06 21:05:45
好帮手慕慕子 2020-05-06 18:51:36

同学你好,对于你的问题解答如下:

  1. 是的,如下:直接在括号中使用var声明的变量是全局的。

    http://img1.sycdn.imooc.com//climg/5eb2964509ae68d904460202.jpg

  2. 需要注意的一点是:使用var声明的变量,只有全局变量和局部变量(函数内部)两种形式。

    也就是说不在函数内部的for和if中声明的变量,也都是属于全局变量的

同学可以试着理解下,祝学习愉快~

  • 提问者 Aurora_Meteor #1
    ‘也就是说不在函数内部的for和if中声明的变量,也都是属于全局变量的’,这句话说得不对吧?函数内部不就是局部作用域了吗?但是函数内部不一定有for或者if啊,比如您第一次回答图片里举的例子,是在函数内部而且没有for和if但它是局部变量吧?
    2020-05-06 19:02:00
好帮手慕慕子 2020-05-06 15:58:32

同学你好,对于你的问题解答如下:

1、var声明的变量不一定是全局变量,例如:在函数内部使用var声明变量就是局部变量,在其他地方不能直接访问

2、这里的当前作用域是指局部作用域,也就是函数作用域。示例:

http://img1.sycdn.imooc.com//climg/5eb26e000957115404660274.jpg

在函数作用域外访问a会出现报错。

同学可以试着理解下,祝学习愉快~

  • 提问者 Aurora_Meteor #1
    那是只有那种单独的直接写花括号,里面的和外面的是一样变量是不是?就是没有for if function这些东西直接写一个{},然后在里面声明。
    2020-05-06 17:33:57
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师