[解決済み] if条件文の中で変数を代入するのは良い方法ですか、悪い方法ですか?[クローズド]
2022-06-07 20:04:20
質問
私は1年前にJavaのような古典的なOO言語からJavaScriptに移行しました。以下のコードは、Javaでは間違いなく推奨されない(あるいは正しくない)ものです。
if(dayNumber = getClickedDayNumber(dayInfo))
{
alert("day number found : " + dayNumber);
}
function getClickedDayNumber(dayInfo)
{
dayNumber = dayInfo.indexOf("fc-day");
if(dayNumber != -1) //substring found
{
//normally any calendar month consists of "40" days, so this will definitely pick up its day number.
return parseInt(dayInfo.substring(dayNumber+6, dayNumber+8));
}
return false;
}
基本的には、if条件文の中で変数に値を代入し、代入された値をbooleanであるかのようにすぐにチェックできることがわかっただけです。
より安全な賭けとして、私は通常それを2行のコードに分離し、最初に代入し、次に変数をチェックします。
どのように解決するのですか?
お勧めしません。問題は、値を比較しようとする一般的なエラーのように見えますが、単一の
=
の代わりに
==
または
===
. 例えば、こんなとき。
if (value = someFunction()) {
...
}
は、そういうつもりで書いたのか、こういうつもりで書いたのか、わからない。
if (value == someFunction()) {
...
}
どうしても代入をその場で行いたいのであれば、明示的な比較も行うことをお勧めします。
if ((value = someFunction()) === <whatever truthy value you are expecting>) {
...
}
関連
-
JSアレイループと効率解析の比較
-
WeChatアプレット用ユニアプリによるグローバルシェアリング
-
vue ディレクティブ v-html と v-text
-
[解決済み】JavaScript TypeError: null のプロパティ 'style' を読み取ることができない
-
[解決済み】ExpressJS - throw er Unhandled errorイベント
-
[解決済み】 `string.split is not a function` というエラーの原因は何ですか?
-
[解決済み】<select>で現在選択されている<option>をJavaScriptで取得するにはどうすればよいですか?
-
[解決済み】JavaScriptで定義されていない変数を確認する方法
-
[解決済み】変数がヌルでないことを確認する方法は?
-
[解決済み】switch文からreturn outするのはbreakを使うより良い方法と考えられるか?[クローズド]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vueがechartsのtooltipにクリックイベントを追加するケーススタディ
-
vueネットワークリクエストソリューション ネイティブネットワークリクエストとjsネットワークリクエストライブラリ
-
Vue+ElementUIによる大規模なフォームの処理例
-
vueのグローバルがscss(mixin)を導入。
-
JavaScriptの配列共通メソッド解説
-
VUEグローバルフィルターの概念と留意点、基本的な使い方
-
[解決済み】ローカルファイルを開くことができません - Chrome: ローカルリソースの読み込みが許可されていない
-
[解決済み】JavaScript TypeError: null のプロパティ 'style' を読み取ることができない
-
[解決済み】JavaScriptでインラインIF文の書き方は?
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。