0

私はかなり調べたので、これがすでに回答されている場合はご容赦ください。

また、実際の用語が何と呼ばれているのかにも興味があります。私が扱っている引数のタイプは「あいまい」ですか?

とにかく、問題は、次のような関数を呼び出せるようにしたいということです:

prompt(_.define(variable, "DEFAULT VALUE")); 

基本的に、変数がデフォルト値を持つことができるようにします。

ただし、これを実行しようとするたびに、次のエラーが発生します。

Timestamp: 6/11/2012 1:27:38 PM
Error: ReferenceError: thisvarisnotset is not defined
Source File: http://localhost/js/framework.js?theme=login
Line: 12

ソースコードは次のとおりです。

function _() {
return this;
};

(function(__) {
__.defined = function(vrb, def) {
    return typeof vrb === "undefined" ? ((typeof def === "undefined") ? null : def) : vrb;
    };
})(_());


prompt(_.defined(thisvarisnotset, "This should work?"), "Can you see this input?");

なぜこれを行っているのかわかりませんか?以前、未定義の変数を関数の引数として呼び出したことがありますが、問題なく機能しました。

4

2 に答える 2

1

基本的に、変数がデフォルト値を持つことができるようにします。

変数をデフォルト値で初期化してみませんか?

または、 を呼び出す前に変数を初期化しますdefined

var variable; // Note that this will not overwrite the variable if it is already set.

または、さらに良い。

var variable = variable || 'default';
于 2012-06-11T17:51:57.777 に答える
1

完全に宣言されていない変数を JS で渡すことはできません。宣言された変数または他の変数の宣言されていないプロパティのみを渡すことができます。

言い換えると:

var a; // you can do _.defined(a)
var a = undefined; // you can do _.defined(a)
a.b; // you can do _.defined(a.b), even though we never defined b
于 2012-06-11T17:45:22.047 に答える