false - みる会図書館


検索対象: 開眼!JavaScript : 言語仕様から学ぶJavaScriptの本質
35件見つかりました。

1. 開眼!JavaScript : 言語仕様から学ぶJavaScriptの本質

ー 147 12 章 B00 厄 an() 12.1 B00 厄 an() オプジェクト B001ean() コンストラクタは t て ue もしくは false を表す真偽値オプジェクトの生 成と、真偽値プリミテイプ値の生成に使用されます。 次の例では、 JavaScript での真偽値の生成方法を列挙します。 ツ/ ・ sfiddle. net/ ・ se ・ 8G7 / / new 演算子と Boolean() コンストラクタを使った生成方法 ( 非推奨 ) var myBooIeanI = new B001ean(fa1se); / / using new keyword console. log(typeof myB001ean1); / / 出力 : 'object' / / new 演算子を使わすに Boolean() コンストラクタを使用してプリミテイプ真偽値を生成 var myBoolean2 = Boolean( の ; console. log(typeof myB001ean2) ; / / 出力 : ・ b001ean ' / / リテラルでプリミティブ値を生成 ( コンストラクタは裏で使用されている ) var myB001ean3 = false; console. log(typeof myB001ean3); / / 出力 : ・ b001ean' console. 10g(myB001ean1, myB001ean2, myB001ean3); / / 出力 : false{} false false 122 B00 厄 anO のバラメータ BooIean ( ) コンストラクタは、 JavaScript で有効な値を引数として 1 っとり、 の引数は次のルールで true か false に変換されます。 0 、 -0 、 null 、 false 、 NaN 、 undefined 、そして空の文字列 ( 当は false に、これ以外のすべての有効な

2. 開眼!JavaScript : 言語仕様から学ぶJavaScriptの本質

150 ー 12 章 BooIean() 12.6 いくつかの値は false 、 それ以外はすべて true に変換 12.2 節で一度述べていますが、 B001ean() コンストラクタ関数を使用した値の変換 に関わるためここでもう一度述べておく価値はあると思います。 真偽を判定するコンテクストにおいて、値が 0 、 - 0 、 null 、 false 、 NaN 、 undefined 、そして空の文字列 ( 物であれば false とみなされます。これ以外のす べての有効な JavaScript の値は true とみなされます。 ワ、 sfiddle. netnsev / / 以下はすべて false ( onsole. 10g ( B001ean ( 0 ) ) ; ( onsole. 10g ( B001ean ( - の ) ; console. 10g(B001ean(fa1se) ) ; console. log(B001ean(' console. 10g(B001ean(undefined) ) ; ( onsole. 10g ( B001ean ( null ) ) ; / / 以下はすべて true ( onsole. 10g ( B001ean ( 1789 ) ) ; console. 10g(B001ean('fa1se ・ ) ) ; は異なる console. 10g(B001ean(Math)); console. 10g(B001ean(Array())); / / als ざという文字列は、真偽値プリミティブの false と JavaScript ではどの値が false としてみなされるのかどうかを知っておくことが重 要です。それにより、どのような値が true とみなされるかどうかもわかります。

3. 開眼!JavaScript : 言語仕様から学ぶJavaScriptの本質

12.5 真偽値オブジェクトは格納されている値が囿 se であっても t 「 ue と評価される一 149 インスタンスプロ / ヾティ ・ constructor インスタンスメソッド ・ toString()—真偽値が true の場合はプリミテイプ型の文字列 'true ・ を、それ以外の場合は竏 als ざを返す。 ・ va1ue0f()—プリミテイプ型の真偽値を返す。 12.5 真偽値オプジェクトは格納されている値が false であっても true と評価される B001ean ( ) コンストラクタに生成された ( プリミテイプ型ではない ) 真偽値オプ ジェクトは、あくまでもオプジェクトであって、たとえそれが false の値を持ってい るとしても評価時には true に変換されてしまいます。次の例で、このことを実証し ます。 社 : / sfiddle. etrse ・ a/vAta / / false の真偽値オブジェクトを生成 var fa1seVa1ue = new B001ean(fa1se); console. 10g(fa1seValue); / / 真偽値オブジェクトが出力される if (fa1seVa1ue) { / / 真偽値オブジェクトの内容が false であっても、オブジェクト自体は常 に true 値とみなされる console. log('falseVa1ue is truthy' ) ; もし真偽値ではない値を真偽値に変換したいのであれば、 new 演算子を使用せずに B001ean() に値を渡してください。すると B001ean() はプリミテイプ値 (true もし くは false) を返します。

4. 開眼!JavaScript : 言語仕様から学ぶJavaScriptの本質

16 ー 1 章 JavaSc 「 ipt オブジェクト (irreducible 、これ以上単純化されない ) であるためプリミティブ値であるとみな されています。つまり、数値は数値そのもの、文字列は文字列そのもの、真偽値は true もしくは false 、そして null と undefined はただの null と undefined である ということです。これらの値はシンプルであり、他の型の値を組み合わせて構成され た値を表しません。 下記の例を試してみて、文字列、数値、真偽値、 null 、 undefined の各値がそれぞ れオプジェクトになりうるかどうかを確かめてください。そしてそれをあなたがすで に知っている Object ( ) や Array ( ) のインスタンス、もしくは他の複雑なオプジェク トと比較してみてください。 ブ値もしくはオブジェクトによって構成されており、そのため複数の値を持った複雑なセットに / * 配列やオブジェクトといった複合型 ( 1.12 節で詳しく解説 ) の値は、 1 つ以上のプリミティ console. 10g(myString, myNumber, myB001ean, myNull, myUndefined) ; var myUndefined = undefined; var myNu11 = null; var myB001ean = false; var myNumber = 10 ; var myString = string とてもシンプルに言うと、プリミテイプ値は JavaScript の世界の情報における一番 console. 10g(myArray) ; var myArray = ['string' , 10 , false, null, undefined]; console. 10g(my0bject) ; myUndefined : undefined myNu11: null, myB001ean : false, myNumber: 10 , myString: ' string var my0bject なりうることに留意してください。

5. 開眼!JavaScript : 言語仕様から学ぶJavaScriptの本質

152 ー 13 章プリミティプ型文字列、数値、真偽値 ー ne ( onsole. 10g(stringLitera1. length) ; / / 出力 : 3 console. 10g(stringLitera1[ ・ length ・ ]) ; / / 出力 : 3 console. log('bar'. length); / / 出力 : 3 ( onsole. log('ba て・ [ ・ length' ]); / / 出力 : 3 / / 数値オブジェクトをオプジェクトとして扱う var number0bject = new Number(). 10023 ) ; console. 10g(number0bject. t0Fixed()); / / 出力 : 1 console. 10g(number0bject[ 't0Fixed' ] ( ) ) ; / / 出力 : 1 / / 数値プリミティブをオブジェクトとして扱うとオブジェクトに変換する var numberLiteral = 1.10023 ; console. log(numberLitera1. t0Fixed()); / / 出力 : 1 console. 10g(numberLitera1[ 't0Fixed' ] ( ) ) ; / / 出力 : 1 ( onsole ・ 10g ( ( 1234 ). t0St ⅱ ng ( ) ) ; / / 出力 : ' 1234 ' ( onsole. 10g ( 1234 [ ・ toSt ⅱ ng ・ ] ( ) ) ; 〃出力 : ' 1234 ' 〃真偽値オブジェクトをオブジェクトとして扱う var b001eanObject = new B001ean( の ; console. 10g(b001ean0bject. t0String()); / / 出力 : 'false' console. log(b001ean0bject[ 't0String' ] ( ) ) ; / / 出力 : ・ false' / / 真偽値プリミティブをオブジェクトとして扱うとオプジェクトに変換する var booleanLitera1 = false; console. 10g(b001eanLitera1. t0String()); / / 出力 : 'false' console. 10g(b001eanLitera1[ ・ t0String' ] ( ) ) ; / / 出力 : 'false' console. log((true). toString()); / / 出力 : 'true' console. log(true[ ・ t0String ・ ] ( ) ) ; / / 出力 : ・ true ・ 数値プリミティブのプロバティに直接アクセスする場合、最初の数字を評価しなければな りません ( 例 : (1). toString(); 、 1.. toString(); 2 つ目の例でドットが 2 つ連続してい るのは、 1 つ目のドットは小数点として評価されるからです。 1. toString() を実行すると 工ラーが発生します ) 。 NOTE 13.2 文字列、数値、真偽値は常にプリミテイプ型を使う 文字列、数値、真偽値のプリミテイプ値はリテラル記法で早く簡単に記述すること ができます。このことだけでもオプジェクトを使わずにプリミテイプ値を使う十分な

6. 開眼!JavaScript : 言語仕様から学ぶJavaScriptの本質

2.7 in 演算子を使って、オブジェクトがプロバティを保持しているかどうかを確認する一 45 ジェクトの prototype プロバティを探した上でそのプロバティが undefined である と判断しているということです。プロバティの検索は常に発生します。そしてこの検 索のプロセスは、 JavaScript における継承の扱い方でもあります。 2.6 h00000POP0 y ( を使 0 て、プロバティが in 演算子 ( 2.7 節で説明します ) はオプジェクトが持っプロバティの存在を確認す ることができますが、これにはプロトタイプチェーン上で見つけることができるプロ パテイも含まれています。 has0wnProperty() メソッドを使うと、指定したプロバティ がプロトタイプチェーン上で発見するものではなく、オプジェクト自身が保持してい るものかどうかを確認することができます。 次の例では my0bject というオプジェクトが f00 プロバティを保持しているかどう か、そしてそのプロバティがプロトタイプチェーンで見つけられたものではないかど うかを確認します。つまり、 my0bject が f00 プロバティを自身で定義しているかど うかを確認します。 var my0bject = { f00 : 'value' } ; console. log(myObject. has0wnProperty( ' f00 ・ ) ) ; / / 出力 : true / / プロトタイプチェーンから継承したプロバティは false を出力 console. 10g(my0bject. has0wnProperty( ・ t0String ・ ) ) ; / / 出力 : false プロバティがオプジェクト自身が保持するプロバテイかどうか、またはプロトタイ プチェーンから継承したプロバテイかどうかを調べるには has0wnProperty ( ) メソッ ドを使います。 2.7 in 演算子を使って、オプジェクトがプロバティを 保持しているかどうかを確認する in 演算子は、オプジェクトが指定された名前のプロバティを保持しているかどう かを確認します ( true または false が返されます ) 。次の例では、 my0bject が f00 プロバティを保持しているかどうかを確認しています。

7. 開眼!JavaScript : 言語仕様から学ぶJavaScriptの本質

148 ー 12 章 BooIean() JavaScript の値は true に変換されます ( 12.6 節で説明します ) 。 次の例では 2 つの真偽値オプジェクトを生成します。ひとつは true 、 もうーっは false です。 / / B001ean() の引数に渡された 0 は false に変換される = new B001ean( の ; var f00 console. 10g ( f00 ) ; / / 出力 : false / / B001ean() の引数に渡された Math オブジェクトは true に変換される = new B001ean(Math) ; var bar ( onsole. 10g ( b 訂 ) ; / / 出力 : true e.ne se とメソッドにアクセスすることができます。 ソッドを持っています。プリミテイプ値のラッパーオプジェクトも同様のプロバティ B001ean ( ) オプジェクトによって生成されたオプジェクトは以下のプロバティとメ メソッド ( B00 厄 a ル p 「 0t0 pe のプロバティ ) 124 B00 厄 an() のインスタンスのプロバティと ・ prototype プロ / ヾティ とメソッドを除く ) B001ean() オプジェクトは次のプロバティを持っています ( 継承されたプロバティ 12.3 B00 厄 an() のプロバティとメソッド NOTE 文字列を生成することができます。 'object' として返します。また、この理由がなくとも、リテラルを使った方が早く簡単に 算子はそれが文字列オブジェクトか否かにかかわらず、複雑なオブジェクトの型をすべて 算子で型を確認する場合に問題が起こるため、通常この方法は避けるべきです。 typeof 演 成します。 String() や Number() の場合と同様、この方法で文字列を生成すると typeof 演 new 演算子を使って B001ean() コンストラクタを実行すると真偽値「オブジェクト」を生

8. 開眼!JavaScript : 言語仕様から学ぶJavaScriptの本質

xx 一目次 1 0 章 1 1 章 1 2 章 1 3 章 String( ) .. … 1 35 … 135 10.1 10.2 10.3 10.4 String() オプジェクト .. String() で文字列オプジェクトを生成、そして値を文字列に 変換… String() のプロバティとメソッド . String() のインスタンスのプロバティとメソッド (String. prototype のプロバティ ) . Number( ) . 11.1 11.2 11.3 11.4 11.5 Number() オプジェクト .. 整数と小数… Number() に引数を渡して数値に変換 . Number() のプロバティとメソッド . Number( ) のインスタンスのプロバティとメソノト (Number. prototype のプロバティ ).. BooIean( ) . … 136 … 137 … 137 … 1 41 … 141 … 142 142 … 144 … 144 ... 147 … 147 … 147 … 148 … 148 12.1 12.2 12.3 12.4 12.5 13.1 13.2 12.6 Boolean() オプジェクト .. Boolean() のパラメータ .. B001ean() のプロバティとメソッド .. Boolean ( ) のインスタンスのプロバティとメソノト (Boolean. prototype のプロバティ ).. 真偽値オプジェクトは格納されている値が false であっても true と評価される 149 いくつかの値は false 、それ以外はすべて true に変換 .. プリミティプ型文字列、数値、真偽値 .. … 150 … 1 51 プリミテイプ値は、プロバティにアクセスされるとオプジェクト に変換される 151 文字列、数値、真偽値は常にプリミテイプ型を使う .. ... 152

9. 開眼!JavaScript : 言語仕様から学ぶJavaScriptの本質

5.3 グローバルプロバティ、グローバル変数ー 79 enc0deURIComponent(uriComponent) 引数として渡した文字列に URL 工 ンコードを行い、その文字列を返す。ただし、英数字および次の記号 ( - ( ) ) のエンコードは行わない。 しくは false を返す。引数には関数実行前に Number() と同等の変換が行わ 引数として渡した数値が NaN かどうかを評価し、 true も isNaN(number) われるす。 もしくは false を返す。引数には関数実行前に Number ( ) と同等の変換が行 isFinite(number) 引数として渡した数値が実数かどうかを評価し、 true リティホールとなりえるため、利用は推奨されない。 eval(x) 引数として渡した文字列を JavaScript として実行する。セキュ れる。そのため、実際には数ではないもの (true 、 null 、 false と判定してしまう。 ーなど ) も 5.3 parseF10at(string) 引数として渡した文字列を数値に変換する。 Number() とは文字列の変換方法が異なる。 parselnt(string, radix) str に渡した文字列を、 radix に渡した底の値 をもとに整数値に変換する。 Number() とは文字列の変換方法が異なるすす。 グローバルプロバティ、グローバル変数 「グローバルオプジェクト」をグローバルオプジェクトに格納されている変数 ( 「グ ローバル変数」 ) や、プロバティ ( 「グローバルプロバティ」 ) と混同しないようにし てください。グローバルオプジェクトはすべてのオプジェクトを格納している唯一無 二のオプジェクトです。グローバル変数、グローバルプロバティはそのグローバル オプジェクト直下に格納されている、他のオプジェクトのスコープ外にあるプロバ テイや変数のことをいいます。これらの値にはどこからでもアクセスできるため「グ radix には必ず引数を渡すようにするべきです。 換されます。しかし、実装環境 ( プラウザ ) によっては 0 で始まる数値が 8 進数になる場合があるため、 訳注 parselnt() の radix を省略した場合、値が 0x もしくは OX から始まらない場合は通常 10 進数に変 は 11.3 節を参照してください。 訳注以降 3 つ (isFinite(number) 、 isNaN(number) 、 parseF10at(string)) の Number() 型変換について ローバル」であるとみなされ、すべてのコードがスコープチェーンを通じてこれらの す

10. 開眼!JavaScript : 言語仕様から学ぶJavaScriptの本質

2.3 ドット記法とブラケット記法でオブジェクトのプロバティにアクセス 39 / / プロバティを更新 cody. living = false; cody ・ age = cody. gender = 'female' ・ cody. getGender = function() { return 'Gender = + cody. gender; } ; ( onsole. 10g ( ( ody ) ; / / 更新されたオプジェクトが出力される cody[ 'getGender' ] ( ) / / 括弧演算子を付与して、メソッドを実行 cody['gender ・ ] , cody['age ・ ], cody[ ・ living ' ] , ( onsole. 10g ( 〃プロバティを取得 cody[ 'getGender' ] = function() { return cody. gender; } ; cody[ 'gender' ] = cody['age'] = cody[ ・ living ・ ] = true; / / ブラケット記法でプロバティを設定 var cody = new 0bject( ) ; / / cody という 0bject() オブジェクトを生成 れます。 分をプラケット記法に置き換えています。プラケット内にプロバティ名の文字列を入 使用した方が便利な場合のみ使用されます。次の例では、前の例のドット表記法の部 ん。どうしてもプラケット記法を使用しなければならない場合や、プラケット記法を プラケット記法は記述の単純さでドット記法に劣るため、一般的には使われませ ) ; / / 出力 : true 33 ・ male' 'male' / / プロバティを更新。設定とほほ同じ cody[ 'living' ] = false; cody[ ・ age ・ ] = cody[ 'gender ・ ] = 'female' ・ cody[ 'getGender ・ ] = function() { return 'Gender = ( onsole. 10g ( ( 0dy ) ; + cody. gender; } ;