javascriptのundefinedの判定

javascriptのundefinedの判定

  • 2021-01-17  最終更新日:2021-01-18

jqueryで高さの数値をとって足し算をしていたらエラーも出ずに動かないということになったので調べてみました。 ワードプレスで管理画面のアドミンバーが一度ログインするとフロント画面でも表示されるのでその高さを取得します。 それから固定ヘッダーの高さも取得してその高さを計算します。

let adminBar_height = $('#wpadminbar').height();
let navBar_height = $('.navbar').height();
const sum = adminBar_height + navBar_height;
console.log(sum); // undefined;

この式でアドミンバーが必ずあるわけじゃないのでundefinedになることに気がつきませんでした。。


分岐

let adminBar_height = $('#wpadminbar').height();
let navBar_height = $('.navbar').height();
if(!adminBar_height){
	adminBar_height = 0;
}
const sum = adminBar_height + navBar_height;
console.log(sum); // 数値が入る

上記の場合は値がとれないとadminBar_heightにはundefinedが入ります。 !adminBar_heightでいける模様。。。 falseなら値が0が入ります。アドミンバーの取得はこれでログインしているときはその高さを取得してそれ以外は0になります。 これでうまく足し算が出来ました。

厳密等価・非等価演算子

ぱっと思いついたのはこの方法です。

var x;
if (x === undefined) {
  // ここの文は実行される
  console.log(x);
}
else {
  // ここの文は実行されない
  console.log(x);
}

上記の場合はxには値が入っていないのでここの文は実行されるを通ります。 var x;がなければReferenceError が発生します。(Uncaught ReferenceError: x is not defined) 等価演算子の場合は(x == undefined)、 xがnullであるかどうかもチェックします。

typeof 演算子

typeofの場合は変数が宣言されていなくてもエラーにはなりません。

if (typeof x === 'undefined') { // エラーなしで true と評価される
   // ここの文は実行される
}
if ('x' in window) {
  // x がグローバルに定義されている場合のみ、ここの文を実行
}

グローバルスコープで確認することも出来ます。

void 演算子

一般的に “void(0)” と書かれます(これは “void 0” と等価です) “void(0)”は、常に undefined を返してくれるとても便利な演算子です。

var x;
if (x === void 0) {
  // ここの文は実行される
}

// 直前まで y は宣言されていない
if (y === void 0) {
  // ReferenceError: y is not defined が発生
}

上記3パターンで確認することが出来ます。 (typeof x === ‘undefined’)なんとなくtypeofが良いかもと思いました。

参考になれば幸いです。


∞Tadashi Suyama∞

js jquery typeof void undefined
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

サイト内検索

最近の投稿

アイキャッチ
Perlで500エラー!原因は文字コードだけでなく改行コード

あまりcgiは使いたくないのですが使わざるを得ない時があります。仕方なく設置するのですがエラーが出ちゃうんです。なんか知らないけど。 ありがちなのがパーミッションとかパスが問題になるんのですけど...

19 Feb 2022

アイキャッチ
WordPressの標準メールアドレスの変更方法

今回はワードプレス専用のアドレス変更方法をご紹介します。ワードプレスのアドレスはwordpress@~という形で送られてきますが変更可能です。 functions.phpに記載するのですがプラグ...

12 Feb 2022

アイキャッチ
LibSass(node-sass)からDartSassに移行の手順

Sassの遷移は多すぎる今日この頃 Ruby Sass→LibSass→DartSass(いまここ) Ruby SassはSassの最初の実装でしたが、2019年3月26日にサポートが終了しま...

22 Jan 2022

アイキャッチ
明けましておめでとうございます

明けましておめでとうございます。 本年も何卒よろしくお願いいたします。 年末年始は雪でしたね、そこまで積もっていませんが。 {% include adsensearticle.html...

10 Jan 2022

アイキャッチ
そろそろvuejs始める

最近はjQueryよりvueで書いた方が楽ではないかと思い学習中です。 そもそもVuejsはドキュメントが日本語対応なので試しやすいし情報も豊富なので学習しやすいです。 3大フレームワークと呼...

02 May 2021

著者

ウェブエンジニアの須山のブログです。

WEBに関することや個人的に関心のあることについて書きます。主に技術系ブログです。

タグクラウド

js jquery typeof void undefined
フッターイメージ