新着情報

HOME > 開発者ブログ > intra-mart > 【備忘録:研修課題(intra-mart)】”undefined”の比較

【備忘録:研修課題(intra-mart)】”undefined”の比較

 

皆さんこんにちは!!

 

おにぎりちゃん二回目の登場となります!!

前回の記事を見てくださった方ありがとうございます(^o^)今回もよろしくお願いします!

 

 

さて今回は、「"undefined"の比較」についてです。

 

donguri

あら、私が比較について話そうと思っていたら、どんぐりちゃん達が背比べを始めましたよ!

なんて冗談は置いておいて、本題に入らせていただきます。(笑)

 

 

 

ECサイト作成の研修課題の中でレビュー投稿の処理を書く機会がありました。

その際にundefindを利用しようと思い、このように書くことにしました。

 

if(request.review != undefined){
  レビューを投稿
}

 

レビューのコメント欄に「review」という名前をつけておきます。

このコメントがundefinedでなかった場合、"レビュー投稿"を実行という処理になります。

 

 

これで実行する・実行しないの制御ができるようになったのですが、先輩社員に見ていただいた際にこんなお話をしていただきました。

(今回も会話形式でご覧ください)

 

おにぎりちゃん→2974 先輩社員→laugh

 

laughundefinedを比較するときは気をつけなきゃいけないことがあるよ」

2974「何に気を付ければよいですか?」

laugh「この比較の仕方だとundefinedという変数と比較していることになるんだ

2974undefinedを新しく定義してしまったら中身が変わってしまうんですね…

 

 

つまりこういうことができてしまうわけです。

 

 

undefined = 1;

if(request.review != undefined){
  レビューを投稿
}

 

"undefined"に1を入れているわけですから、"request.review"は1と比較することになります。

これでは、入力が1以外の場合は、すべてレビュー投稿がされてしまいますね…

 

2974「ではundefindと比較させたいときは一体どうすればよいのでしょうかcrying?」

laugh「よく使われる方法にこんなやり方があるよ」

 

if (typeof request.review !== "undefined"){
  レビューの投稿
}

 

この方法はundefinedにtypeof演算子を作用させることで、undefinedを文字列が返るため比較が可能となるようです。

ちなみにtypeof演算子は色々なものを文字列で返してくれるみたいですよsurprise

   値 

  返り値

未定義 "undefined"
文字列 "string"
数値 "number"
真偽値 "boolean"
null "object"
オブジェクト "object"
配列 "object"
関数 "function"

 

 

typeof演算子を使用する他に、こんな方法も教えていただきました。

 

if(!isUndefined(request.review)){
  レビューの投稿
}

 

こちらはintra-mart独自の方法で、指定した値がundefinedかどうかを判別してくれるメソッドです。

返り値はbooleanで、undefinedであれば"true"、それ以外であれば"false"が返されます。

 

私は今回intra-mart独自の方法を使用させていただきました!

intra-martの環境で作っているのですから、使用しないともったいないですよねyes!!

 

 

今回ご紹介したのは二つだけでしたが、きっとこの他にもたくさんあるのだと思います…

ひとつの方法でできたからといって終わり!ではなく、複数の方法を試して学んだ上で業務に活かせていければと思います。

 

2017年06月27日(火)

テレマーケティングシステムsakuraトライアル

コールセンターシステム sakuraCTI

資料請求

お問合わせ

コラム

用語集

開発者ブログ

イントラマート

Sakuraテレマーケティングシステム

 

 

営業リスト

インフラソリューションのご案内

導入事例

テレアポノウハウ本プレゼントキャンペーン

認証マーク

アースリンクは
プライバシーマークを
取得しています。

プライバシーポリシー


SSLとは?

当サイトでは、実在性の証明とプライバシー 保護のためSSLサーバ証明書を使用しSSL 暗号化通信を実現しています。

このページの先頭へ