簡體   English   中英

帶可選參數的函數未注冊傳遞的值

[英]Function with optional parameter not registering passed value

我有這個函數有一個可選參數。 問題是,當我傳遞一個參數時,它的行為就像我從未傳遞過它一樣。

這是我的代碼:

function sideA(i){

    // i is an optional argument.
    i = i || 'random';

    console.log(i);
}

sideA(0);

在這里,控制台將始終顯示“ random ”。 不確定是什么。 有任何想法嗎?

0,"",undefined,null視為false

在這一行

i = i || 'random';

如果我是真的那么i的值將被分配,否則將被使用

試試這樣

 i= typeof i ===  "undefined" ? "random" : i

像這樣打電話

sideA(0) 
sideA() // pass nothing to get random

0是假的。

我想你想檢查它是否為nullundefined

 function sideA(i) { // i is an optional argument. i = (i === null || i === undefined ? 'random' : i); console.log(i); } sideA(0); 

或者,您可以檢查typeof以查看它是否為數字:

 function sideA(i) { // i is an optional argument. i = (typeof i === 'number' ? i : 'random'); console.log(i); } sideA(0); 


文檔:

這是因為0是一個假值 ,因此Logical OR運算符將返回第二個操作數。

如果你想使用哪個值傳遞,如果有任何甚至未定義但是如果沒有使用參數,則想要使用默認值,如sideA(); 然后

i = arguments.length ? i : 'random';

嘗試明確地測試i是否undefined 如果i沒有undefined ,請返回i ,否則返回'random'

  function sideA(i) { // i is an optional argument. // if `i` _not_ `undefined` , `i` = `i` , // else , `i` = `'random'` i = i !== undefined ? i : 'random'; console.log(i); } sideA(0); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM