JavaScriptの関数のポイントの1つがスコープを提供することだと思いました。関数内で定義されたものは、関数内でのみ使用可能でした。javascriptの関数スコープ
function cat(name) {
talk = function() {
alert(" say meeow!")
}
}
talk()
私は話が見えてはならないので、上記のコードは倒れることを期待します。しかし、それはなぜですか?
JavaScriptの関数のポイントの1つがスコープを提供することだと思いました。関数内で定義されたものは、関数内でのみ使用可能でした。javascriptの関数スコープ
function cat(name) {
talk = function() {
alert(" say meeow!")
}
}
talk()
私は話が見えてはならないので、上記のコードは倒れることを期待します。しかし、それはなぜですか?
var
キーワードで宣言しなかったためです。
キーワードvar
を使用しない場合は、グローバルスコープになります。あなたがvar
を使用する場合、それは、関数のスコープになります。
function cat(name) {
//anonymous function assigned to the local variable talk
var talk = function() {
alert(" say meeow!")
};
}
あなたはvar
キーワードなしという名前の関数を宣言することができ、そして、彼らはまだローカルスコープになります。
function cat(name) {
//local talk function
function talk() {
alert(" say meeow!")
};
}
実際には、どのスコープでも変数を定義していません。そのため、グローバルスコープがデフォルトになります。 JavaScriptは、あなたがそれらを定義せずに変数を使用することができます
function cat(name) {
var talk = function() { // <-- added var
alert(" say meeow!")
}
}
talk() // fail
が、これはプログラミング言語の習得がより容易かつ柔軟になります。私はこの機能を使用することをお勧めしません。常に変数を定義してください。
関数内では、変数を "var"で宣言するか、グローバルに宣言しなければなりません。
変数のデフォルトに前の質問で説明したように、宣言していないときのグローバルスコープhttp://stackoverflow.com/questions/9745069/not-a-function – Guffa