2016-12-15 4 views
0

1つまたは2つの引数だけが関数に送信される(3つではなく)場合、関数内の変数に設定値をバイパスする方法を教えてください。引数のいずれかが未定義のときに設定値をバイパスする方法

現在、私のコードは次のようである:

var mj = function(x, y, z){ 
    if(x || y || z === !undefined){ 
    var xName = x.name; 
    var yName = y.name; //throws error here 
    var zName = z.name; 
    } 
} 
mj({name: "mo"}) 
+0

あなたは 'var xName = x && x.name; var yName = y && y.name; '? – raina77ow

+0

条件は次のようになります。 '(x)|| (y)|| (z === true) '('!未定義は 'true'です) – qxz

+0

@ raina77owのみ' var xName = x.name 'のみです。この方法ではない: 'var xName = x && x.name' – Deke

答えて

4

これらのいずれかが、その後の割り当てのコードが実行されません(すべての3つが渡されていないことを意味する)定義されていない場合は、条件(x && y && z)を使用することができます。

var mj = function(x, y, z) { 
    var xName = x && x.name; 
    var yName = y && y.name; 
    var zName = z && z.name; 
} 
mj({ 
    name: "mo" 
}) 

注:場合、あなたは、あなたが行うことが割り当てられて送信され、一度だけを必要とする場合には

var mj = function(x, y, z) { 
 
    if (x && y && z) { 
 
    var xName = x.name; 
 
    var yName = y.name; 
 
    var zName = z.name; 
 
    } 
 
} 
 
mj({ 
 
    name: "mo" 
 
})

第二ケース

値は渡されませんエラーを取得しないはい、xName、yNameまたはzNameは未定義になります。

関連する問題