SlideShare a Scribd company logo
ECMA262-Edition5.1読書会 
2014/07/23 
藤澤勇樹
第8条 型 
ECMAScript言語型仕様書型 
Undefined型 
Reference型 
Null型 
List型 
Boolean型 
Completion型 
String型 
など 
Number型 
Object型
8-1 Undefined型 
 値が格納されていない変数はこの値をも 
つ
TYPEOF関数 
 typeof演算子は対象となる値のデータ型 
を表す文字列を返す演算
8-2 Null型 
 まさにnullと呼ばれる値を持つ 
これがObject型になるのはなぜか?? 
typeof null 
過去に11.4.3のNullの結果を変えようという提案があったが、 
下位互換性のために採用されなかった。 
http://wiki.ecmascript.org/doku.php?id=harmony:typeof_null
8-3 Boolean型 
 trueとfalseと呼ばれる二つの値を持つ論 
理要素を持つ
8-4 String型 
 16ビットの符号なし整数値を要素とするゼ 
ロ個以上の順列の並びである 
 どの要素も単一のUTF16コード単位である 
とみなされる 
プリミティブ値でlengthが取得できるのはなぜか? 
var str = ‘str’ 
str.length //3
8-5 Number型 
 倍数精度64ビットIEEE754形式で表される 
 符号:1ビット 
 指数部:11ビット 
 仮数部:52ビット 
 絶対値が2の53乗より小さい整数は、Number 
型で表現することができる 
Math.pow(2,53)+1; 
Math.pow(2,53)+3; 
が不正確な値になるのはなせか?
丸めモード 
 Number型で正確に表せるのは、2の52乗 
まで 
 その後は、2進数に直した最下位が丸め 
対象となる 
 丸めは、偶数丸めモードとなる 
 2の1024を超えるとInfinity(無限大)となる
8-6 Object型 
 Object型はプロパティのコレクション。プロパティは以下の3 
つに分類される 
 名前付きデータプロパティ 
 表5 
 名前付きアクセサプロパティ 
 表6 
 内部プロパティ 
 表8、表9
プロパティ属性 
var obj = Object.create(Object.prototype, { 
x : { 
value : 1, 
writable : true, // x の値が変更できる 
enumerable : true, // for (var k in obj) で x を辿ることができる 
configurable : true // 下に説明 
} 
}
デフォルト属性値 
 表7のデフォルト属性は、Configurableが 
少なくともtrueに思える。検証間違いか? 
 検証方法は、オブジェクトをcreateして、何もし 
ない状態でプロパティが削除できるかどうかを 
検証した 
 削除できた
内部プロパティの[[Class]] 
 オブジェクトの仕様で定義された分類を示 
す文字列 
 Object.prototype.toStringを除いてプログ 
ラムにこの値へアクセスする方法を提供し 
ない点に注意すること 
Object.Constructor.nameで取得できるが 
これは仕様違反?
8-7 Reference仕様型 
 Reference型は、delete、typeof、代入演算子の 
ような演算子の振る舞いを説明するために使わ 
れる。 
 Referenceは以下、3つから成り立つ 
 Base値:undefined,Object,Boolean,String,Number, 
もしくは環境レコード 
 リファレンス名:文字列 
 Boolean値であるstrictリファレンスフラグ
JavaScriptのReference型 
JavaScriptのReference型: 
<base, referencedName> 
*グローバルオブジェクトの場合は 
base=Environment Record 
となる 10.2.1
“string”.lengthの場合 
1. Type(string)が参照でなければVそのものを返 
す 
2. GetBase(string)の呼び出し結果をbase(String 
型)とする 
3. HasPrimitibeBaseはtrueなので、特別な 
[[GET]]メソッドにする 
4. ToObject(Base)の呼び出し=>Stringオブジェ 
クト 
5. Stringオブジェクトの内部メソッドをプロパティ 
名”length”で呼び出した結果をdescとする

More Related Content

Viewers also liked

2.Sektorea:Lehengaiak, energia-iturriak eta Industria
2.Sektorea:Lehengaiak, energia-iturriak eta Industria2.Sektorea:Lehengaiak, energia-iturriak eta Industria
2.Sektorea:Lehengaiak, energia-iturriak eta IndustriaJabitxu Tokiona
 
Palestina
PalestinaPalestina
Questionnaire Analysis
Questionnaire AnalysisQuestionnaire Analysis
Questionnaire AnalysisEmmaWinter
 
Historia de España 2º Trimestre
Historia de España 2º TrimestreHistoria de España 2º Trimestre
Historia de España 2º Trimestreanna2del6
 
Pasta week 6
Pasta week 6Pasta week 6
Pasta week 6Alex Wood
 
Presentació Carme Barba Webquest
Presentació Carme Barba WebquestPresentació Carme Barba Webquest
Presentació Carme Barba Webquest
Anna Pérez
 
Nov 14
Nov 14Nov 14
Nov 14
csvine
 
Tefloncoating
TefloncoatingTefloncoating
Tefloncoating
Prabhat Udyog
 
Maltrato
MaltratoMaltrato
Maltratokismy
 
IWB Discovery Session
IWB Discovery SessionIWB Discovery Session
IWB Discovery Session
Lauren Sayer
 
Goodwin’s Theory In Practice
Goodwin’s Theory In PracticeGoodwin’s Theory In Practice
Goodwin’s Theory In Practicekylekmile
 
Homo habilis Manuel sobrido
Homo habilis Manuel sobridoHomo habilis Manuel sobrido
Homo habilis Manuel sobrido
encarnavilla
 

Viewers also liked (20)

2.Sektorea:Lehengaiak, energia-iturriak eta Industria
2.Sektorea:Lehengaiak, energia-iturriak eta Industria2.Sektorea:Lehengaiak, energia-iturriak eta Industria
2.Sektorea:Lehengaiak, energia-iturriak eta Industria
 
Palestina
PalestinaPalestina
Palestina
 
Meistriškumas
MeistriškumasMeistriškumas
Meistriškumas
 
My chemical romance
My chemical romanceMy chemical romance
My chemical romance
 
Questionnaire Analysis
Questionnaire AnalysisQuestionnaire Analysis
Questionnaire Analysis
 
L’univers
L’universL’univers
L’univers
 
Historia de España 2º Trimestre
Historia de España 2º TrimestreHistoria de España 2º Trimestre
Historia de España 2º Trimestre
 
Pasta week 6
Pasta week 6Pasta week 6
Pasta week 6
 
Santa cruz barillas
Santa cruz barillasSanta cruz barillas
Santa cruz barillas
 
Presentació Carme Barba Webquest
Presentació Carme Barba WebquestPresentació Carme Barba Webquest
Presentació Carme Barba Webquest
 
Nov 14
Nov 14Nov 14
Nov 14
 
Mojinos escozios1
Mojinos escozios1Mojinos escozios1
Mojinos escozios1
 
Readme
ReadmeReadme
Readme
 
Tefloncoating
TefloncoatingTefloncoating
Tefloncoating
 
Maltrato
MaltratoMaltrato
Maltrato
 
IWB Discovery Session
IWB Discovery SessionIWB Discovery Session
IWB Discovery Session
 
Goodwin’s Theory In Practice
Goodwin’s Theory In PracticeGoodwin’s Theory In Practice
Goodwin’s Theory In Practice
 
Homo habilis Manuel sobrido
Homo habilis Manuel sobridoHomo habilis Manuel sobrido
Homo habilis Manuel sobrido
 
Double 1
Double 1Double 1
Double 1
 
Violencia genero
Violencia generoViolencia genero
Violencia genero
 

20140723 ecmascript

  • 2. 第8条 型 ECMAScript言語型仕様書型 Undefined型 Reference型 Null型 List型 Boolean型 Completion型 String型 など Number型 Object型
  • 3. 8-1 Undefined型  値が格納されていない変数はこの値をも つ
  • 5. 8-2 Null型  まさにnullと呼ばれる値を持つ これがObject型になるのはなぜか?? typeof null 過去に11.4.3のNullの結果を変えようという提案があったが、 下位互換性のために採用されなかった。 http://wiki.ecmascript.org/doku.php?id=harmony:typeof_null
  • 6. 8-3 Boolean型  trueとfalseと呼ばれる二つの値を持つ論 理要素を持つ
  • 7. 8-4 String型  16ビットの符号なし整数値を要素とするゼ ロ個以上の順列の並びである  どの要素も単一のUTF16コード単位である とみなされる プリミティブ値でlengthが取得できるのはなぜか? var str = ‘str’ str.length //3
  • 8. 8-5 Number型  倍数精度64ビットIEEE754形式で表される  符号:1ビット  指数部:11ビット  仮数部:52ビット  絶対値が2の53乗より小さい整数は、Number 型で表現することができる Math.pow(2,53)+1; Math.pow(2,53)+3; が不正確な値になるのはなせか?
  • 9. 丸めモード  Number型で正確に表せるのは、2の52乗 まで  その後は、2進数に直した最下位が丸め 対象となる  丸めは、偶数丸めモードとなる  2の1024を超えるとInfinity(無限大)となる
  • 10. 8-6 Object型  Object型はプロパティのコレクション。プロパティは以下の3 つに分類される  名前付きデータプロパティ  表5  名前付きアクセサプロパティ  表6  内部プロパティ  表8、表9
  • 11. プロパティ属性 var obj = Object.create(Object.prototype, { x : { value : 1, writable : true, // x の値が変更できる enumerable : true, // for (var k in obj) で x を辿ることができる configurable : true // 下に説明 } }
  • 12. デフォルト属性値  表7のデフォルト属性は、Configurableが 少なくともtrueに思える。検証間違いか?  検証方法は、オブジェクトをcreateして、何もし ない状態でプロパティが削除できるかどうかを 検証した  削除できた
  • 13. 内部プロパティの[[Class]]  オブジェクトの仕様で定義された分類を示 す文字列  Object.prototype.toStringを除いてプログ ラムにこの値へアクセスする方法を提供し ない点に注意すること Object.Constructor.nameで取得できるが これは仕様違反?
  • 14. 8-7 Reference仕様型  Reference型は、delete、typeof、代入演算子の ような演算子の振る舞いを説明するために使わ れる。  Referenceは以下、3つから成り立つ  Base値:undefined,Object,Boolean,String,Number, もしくは環境レコード  リファレンス名:文字列  Boolean値であるstrictリファレンスフラグ
  • 15. JavaScriptのReference型 JavaScriptのReference型: <base, referencedName> *グローバルオブジェクトの場合は base=Environment Record となる 10.2.1
  • 16. “string”.lengthの場合 1. Type(string)が参照でなければVそのものを返 す 2. GetBase(string)の呼び出し結果をbase(String 型)とする 3. HasPrimitibeBaseはtrueなので、特別な [[GET]]メソッドにする 4. ToObject(Base)の呼び出し=>Stringオブジェ クト 5. Stringオブジェクトの内部メソッドをプロパティ 名”length”で呼び出した結果をdescとする