<script>
name = "Tim";
function greet() {
console.log(name);
var name = "David" ;
}
greet();
</script>
爲什麼結果顯示「未定義」?我預計蒂姆或大衛。js中變量聲明的問題
<script>
name = "Tim";
function greet() {
console.log(name);
var name = "David" ;
}
greet();
</script>
爲什麼結果顯示「未定義」?我預計蒂姆或大衛。js中變量聲明的問題
第一個「名字」聲明是一個全局變量。 在函數內部,你再次聲明它,所以你失去了全局的可見性。但是你在變量被定義之前使用這個變量。
name = "Tim"; // global name here
function greet() {
// var name; // here name is automatically declared (because of hoisting) but undefined
console.log(name); // here you use name before it is defined
var name = "David" ; // here name is defined
}
greet();
JavaScript在函數中有範圍,這很重要。 Google爲'javascript提起'會有所幫助。
+1正確。 Javascript會在新範圍中看到該變量的重新聲明,因此它會取消原始內容,但在設置之前會使用它。 – musicnothing
恰克像這樣,
var name = "Tim";
function greet() {
console.log(name);
name = "David" ;
}
greet();
使用變數名稱= 「添」 – Markipe
這裏是廣泛說明[http://stackoverflow.com/a/9085872/2413470][1] [1]:HTTP://計算器。 com/a/9085872/2413470 – spring