【Day15】公园跟你家院子—全域变数与区域变数的区别

JavaScript的变数依使用的切分范围(作用域)可以分为两种:

  • 区域变数
  • 全域变数

前面提到透过var宣告的变数,最小的切分范围为function,在函式内宣告的变数只能在函式内部使用,无法由外层叫用,其他的函式也不能使用,当函式执行完之後,变数就由记忆体中清除。这就是「区域变数」。

而在外层用var宣告的变数则为「全域变数」,即使写在function里面,没用var宣告的变数都是「全域变数」。就如同前面有提到的,function内可以去捉外层的变数来用,而外层无法捉到function内的变数来用,也就是说「全域变数」是大家公用的。而「区域变数」则只能在function内使用。

举个简单的例子,公园里的荡秋千,大家都可以去玩,这就是「全域变数」;但是你家院子里的荡秋千,外面的人没办法进来玩,就是「区域变数」。

而其实「全域变数」指的是「全域物件」的属性,以浏览器来说,「全域物件」就是window物件,window物件的部分在提到BOM的时候会再详细解释,我们先知道就好。

var man = '郭靖';
console.log(window.man);  //郭靖

「var man = '郭靖'」变成window物件的属性了。

而使用var宣告的全域变数,无法使用delete关键字删除。

var man = '郭靖';
console.log(window.man);
delete window.man //false
console.log(window.man); // 郭靖

但是透过window宣告的全域变数,却可以使用delete删除。

window.man = '郭靖';
console.log(window.man);
delete window.man //true
console.log(window.man); // undefined

这一点是需要特别注意的。


<<:  [Day 14] 简单的单元测试实作(八)-修改成API来呼叫

>>:  [iT铁人赛Day15]JAVA更多的回圈

资料传输格式 JSON

在没有网路的年代,人们获取资讯的来源可能是报章杂志、广播电视等等,报章杂志的排版需要符合出版业的要求...

使用bot.py建立起你的第一个机器人

行前作业 注册帐号 需要有自己的服务器或是相应的权限 开始後续作业 搜寻discord develo...

成员 19 人:

撰写中 在求发展的道路上,又过了一日...... 这时,成员 19 人。 ...

大共享时代系列_014_线上白板

事情讲不清楚吗? 那我觉得你需要来块白板~(๑•̀ω•́)ノ 给我一块白板,让我们一起得到更多 爲什...

第二十九日-MYSQL预存程序 STORED PROCEDURE:来写一个BMI小程序(2)

昨天已经认识分隔符号 DELIMITER和STORED PROCEDURE建立语法, 建立出BMI小...