次の条件ステートメントは、値が定義されていない場合に例外をスローします。
if (!(e = e[f])) {
e[f] = {};
}
ただし、次のインライン条件は例外をスローしません。
e = e[f] ? e[f] : e[f] = {};
条件を含む関数は次のとおりです。ウィンドウオブジェクトから動的にオブジェクトを作成します。
function t(a, c) {
var s = a.split('.'),
e = window;
// works only in IE
!(s[0] in e) && e.execScript && e.execScript('var '+ s[0]);
for (var f; s.length && (f = s.shift()); ) {
if (!s.length && void 0 !== c) {
e[f] = c;
}else {
e = e[f] ? e[f] : e[f] = {};
}
}
}
この関数を呼び出す例:
t('s.d');
この呼び出しにより、新しいオブジェクトが作成されます。window.s.d
誰かが何が起こっているのかについて何か考えがありますか?