5

私の英語を許してください。私はネイティブスピーカーではありません。

私の問題は、このようなコードを書くときに発生します

luminosity = settings.luminosity || 50;
opacity = settings.opacity || 100;

問題は、0が有効な値であるはずですが、 が0Javascript で間違っているために見落とされ、 の右側のデフォルト値に設定されてしまうことです||

0偽物として扱われないように修正する方法はありますか?

今、私はやっています

luminosity = "luminosity" in settings ? settings.luminosity : 50;

でも長いから好きじゃない。

4

4 に答える 4

2

文字列に変換できるの'0'は次のtruthyとおりです。

luminosity = settings.luminosity === 0 ? '' + settings.luminosity : settings.luminosity || 50;
opacity = settings.opacity === 0 ? '' + settings.opacity : settings.opacity || 100;

または、入力または要件に応じて、これを単純に使用できます。

luminosity = '' + settings.luminosity || 50;
opacity = '' + settings.opacity || 100;

'' + number数値を文字列に変換するための省略形です。

于 2012-06-16T19:40:52.540 に答える
1

@Tooraj のコードの初期バージョンを微調整します。

var setting = {luminosity:0};
var defaultSetting = {luminosity:50, opacity:100};

setting = $.extend({}, defaultSetting, setting);

// setting now has a value of {luminosity:0, opacity:100}

私は前にこれをやったことがありません。しかし、FF、Chrome、および IE9 では問題なく動作するようです。

于 2012-06-16T20:12:08.153 に答える