現在、ny 変数はグローバルであるため、定義されているように表示されますが、テスト関数を呼び出すときに、ny 引数が設定されているかどうかだけを確認したくありません。typeof(ny) でグローバル ny 変数を考慮したくありません。
ny = 1;
var test = function(ny){
console.log(typeof ny ==='undefined');
}
test();
現在、ny 変数はグローバルであるため、定義されているように表示されますが、テスト関数を呼び出すときに、ny 引数が設定されているかどうかだけを確認したくありません。typeof(ny) でグローバル ny 変数を考慮したくありません。
ny = 1;
var test = function(ny){
console.log(typeof ny ==='undefined');
}
test();
typeof(ny) でグローバル ny 変数を考慮したくありません。
それはしません。ny
引数識別子として使用することによりny
、外側のスコープで をシャドーイングします。あなたの例はログに記録されますtrue
。私が知る限り、それがあなたの望みです。
補足:typeof
は演算子であり、関数ではありません。括弧は必要ありません:
console.log(typeof ny === "undefined");
引数が関数に渡されたかどうかを確認したい場合は、arguments
オブジェクトの長さを確認してください。
次の関数を検討してください。
var test = function (ny) {
console.log(arguments.length > 0);
};
test()
ログしますfalse
。
test(ny)
ログしますtrue
。
私が知っている唯一の方法:
JavaScript はスコープを段階的にチェックし、外側に拡張します。その名前のグローバル変数がある場合、JavaScript は最終的にそれを見つけて使用します。スコープに関係なく、JavaScript に変数を無視させることはできません。