承前文,在函式中的结构中,包括变数。使用变数,就须宣告,因此宣告所及的范围(Scope)成为函式、乃至整个程序能否执行、怎样执行的要害所在。
耳熟能详的「区域变数」、「全域变数」,在这里有其明确范围。「区域」者,指函式区域之内。「全域」者,指写在函式之外、影响整个程序范围的变数。
若函式本身「没有宣告」变数(区域),就会往函式外找「有宣告」的同一变数(全域)。如:
var rebellionStory = 23
var boxOffice = function (firstTwo){
//内部没有变数rebellionStory,就会往外找,找到带参数23的全域变数rebellionStory
//若整个程序都没有rebellionStory,就会引发错误 "rebellionStory is not defined"
return rebellionStory + firstTwo;
};
console.log( boxOffice(12) ); //得出35
此处须留意者,是力场(误)函式可以「单向」「向外」读取变数,但外层读不到函式内的变数。
为什麽?因为QB做了调整(再误)。
函式里的变数宣告,只对函式里有效。在规则中,function{ } 可以关住:var、let、const宣告。而 { } 只能关住:let、const。也就是说:
在以var宣告的情况下,若函式内的变数只有「指派」、没有「宣告」,会令函式**「向外寻找同名变数」**:
有关引数/参数/回传值的若干规则,具列如下:
在函式内,若在变数被宣告前就使用(亦即console.log变数先於var变数),程序会在函式范围内寻找变数。确认其存在後,便不会判定错误,而是给出尚未定义(undefined)提示。
详如Day-02说明
https://ithelp.ithome.com.tw/articles/10264852
我们已经写好验证的 views,但是如果现在启动服务的话 无论开启哪个 URL,都会看到一个Temp...
在 Storyboard 上设计画面 接下来我们来在一开始建立的专案上设计画面,首先我们在专案导览器...
FGL程序运行时可用的画面已经可做出来了,但总不能只是拿来 DISPLAY TO 资料,应该要拿来...
引言 昨天学了 chmod 命令的用法,这边大概整理几个简单用法: $ chmod 参数 目标档案...
删除作者 作法1 : 直接修改 删除作者,删掉,从这边删掉,按确定就可以了 作法2 : 移除档案属性...