範圍 (scope)
顯式宣告變數
var value = 1;
未顯式宣告變數
value = 1;
使用情境
- 強烈建議使用
var
防止同名的區域變數和全域變數之間的衝突。
重點提醒
- 盡量減少使用全域變數,因為如果你使用很多 Javascript 函式庫,免不了使用到同樣名字的全域變數,將導致不可預期的副作用。
對類別語言而言 scope 是什麼?
- global scope
- block scope
public class Main {
int c = 3;
public void demo(){
int a = 0;
if(true){
int b = 1;
}
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
對 Javascript 而言 scope 是什麼?
- global scope
- function scope
範例
範例一
var message = 'hi';
if(true){
var message = 'bye';
console.log('=== 1 ===');
console.log(message); // ?
}
console.log('=== 2 ===');
console.log(message); // ?
範例二
var message = 'hi';
function greet() {
var message = 'bye';
console.log(message); // ?
}
console.log('=== 1 ===');
console.log(message); // ?
console.log('=== 2 ===');
greet();
console.log('=== 3 ===');
console.log(message); // ?
範例三:忽略 var 的情況
message = 'hi';
function greet() {
message = 'bye';
console.log(message);
}
console.log('=== 1 ===');
console.log(message);
console.log('=== 2 ===');
greet();
console.log('=== 3 ===');
console.log(message);