第2回
型と値 (工事中)
開発部
てるー
アジェンダ
1. 基本型の値
2. 型変換
アジェンダ
1. 基本型の値
2. 型変換
型
● 基本型
○
○
○
○
○

数値
文字列
論理値
null
undefined

● オブジェクト型
○ 上記以外
数値
● 整数と浮動小数点数を区別しない
● 64ビット浮動小数点形式
数値リテラル
3
0xff
0377
3.14
6.02e23
文字列
● リテラルは「’」もしくは「”」を使う
○ Google のコーディング規約は「’」を推奨
○ 例
■ 「’」
●
●

Backbone
AngularJS

■ 「”」
●

jQuery
文字列リテラル
’testing’
‘ほげほげ’ + ‘ぴよぴよ’
‘This string¥nhas two lines’
‘<p><a href=”#jquery”>jQuery</p>’
“<p><a href=¥”#jquery¥”>j...
論理値
● 予約語 true と false で表現
null と undefined
● null
○ 「値がない」ことを示す
○ プログラムレベルで予定どおりの場合を表すもの

● undefined
○ 「値がない」ことを示す
○ システムレベルで予期せぬ、エラーのような場合に表す
もの
undefined (1 / 2)
var hoge = ‘test’;
console.log(hoge); // test
var piyo;
console.log(piyo); // undefined
undefined (2 / 2)
var executeA = function() { return 1 + 2; };
console.log(executeA()); // 3
var executeB = function() { 1...
イメージ
var hoge = ‘test’;

‘test’

var hoge = null;

null

var hoge; // undefined
アジェンダ
1. 基本型の値
2. 型変換
hoge は文字列なはずなのに・・・?
var hoge = ‘256’;
console.log(hoge / 16); // 16
if (hoge) { console.log(‘Hello!’); } // Hello!
console...
状況に応じて柔軟に
型が変換される
JavaScript
第6版
P49 表3-2
からの引用
ラッパーオブジェクト (1 / 2)
var s = new String(‘ABC’);
console.log(s.toLocaleLowerCase()); // abc
var n = new Number(12300000);
con...
ラッパーオブジェクト (2 / 2)
console.log(
‘ABC’.toLocaleLowerCase()); // abc
console.log(
12300000.toExponential()); // 1.23e+7
明示的な型変換
Number(‘3’) // 3
String(false); // ‘false’
Boolean([]) // true
Object(3) // new Number(3)
オブジェクトから基本型への変換
すべてのオブジェクトは変換メソッドを 2 つもってい
る
● toString()
● valueOf()
toString()
オブジェクトを表す文字列を返す

new Number(3).toString() // ‘3’
({x: 1, y: 2}).toString() // ‘[object Object]’
[1, 2, 3].toStr...
valueOf()
はっきり定義されていない
基本的は、オブジェクトを基本型値に変換するの
が仕事
new Number(3).valueOf(); // 基本値型の 3
new String(‘abc’).valueOf(); // 基本値型...
オブジェクトから文字列に変換 (1 / 2)
1. toString() の実行を試みる
2. valueOf() の実行を試みる
3. TypeError を投げる
オブジェクトから文字列に変換 (2 / 2)
var hoge = {
toString: function() {
return ‘toString’;
},
valueOf: function() {
return ‘valueOf’;
}...
オブジェクトから数値に変換 (1 / 3)
1. valueOf() の実行を試みる
2. toString() の実行を試みる
3. TypeError を投げる
オブジェクトから文字列に変換 (2 / 3)
var hoge = {
toString: function() {
return 1;
},
valueOf: function() {
return 2;
}
};
console.log(h...
オブジェクトから文字列に変換 (3 / 3)
var hoge = {
toString: function() {
return 1;
},
valueOf: function() {
return { a: 2 };
}
};
consol...
お わ り
Upcoming SlideShare
Loading in …5
×

JS 6th edition reading circle part 2

483 views

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
483
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

JS 6th edition reading circle part 2

  1. 1. 第2回 型と値 (工事中) 開発部 てるー
  2. 2. アジェンダ 1. 基本型の値 2. 型変換
  3. 3. アジェンダ 1. 基本型の値 2. 型変換
  4. 4. 型 ● 基本型 ○ ○ ○ ○ ○ 数値 文字列 論理値 null undefined ● オブジェクト型 ○ 上記以外
  5. 5. 数値 ● 整数と浮動小数点数を区別しない ● 64ビット浮動小数点形式
  6. 6. 数値リテラル 3 0xff 0377 3.14 6.02e23
  7. 7. 文字列 ● リテラルは「’」もしくは「”」を使う ○ Google のコーディング規約は「’」を推奨 ○ 例 ■ 「’」 ● ● Backbone AngularJS ■ 「”」 ● jQuery
  8. 8. 文字列リテラル ’testing’ ‘ほげほげ’ + ‘ぴよぴよ’ ‘This string¥nhas two lines’ ‘<p><a href=”#jquery”>jQuery</p>’ “<p><a href=¥”#jquery¥”>jQuery</p>”
  9. 9. 論理値 ● 予約語 true と false で表現
  10. 10. null と undefined ● null ○ 「値がない」ことを示す ○ プログラムレベルで予定どおりの場合を表すもの ● undefined ○ 「値がない」ことを示す ○ システムレベルで予期せぬ、エラーのような場合に表す もの
  11. 11. undefined (1 / 2) var hoge = ‘test’; console.log(hoge); // test var piyo; console.log(piyo); // undefined
  12. 12. undefined (2 / 2) var executeA = function() { return 1 + 2; }; console.log(executeA()); // 3 var executeB = function() { 1 + 2; }; console.log(executeB()); // undefined
  13. 13. イメージ var hoge = ‘test’; ‘test’ var hoge = null; null var hoge; // undefined
  14. 14. アジェンダ 1. 基本型の値 2. 型変換
  15. 15. hoge は文字列なはずなのに・・・? var hoge = ‘256’; console.log(hoge / 16); // 16 if (hoge) { console.log(‘Hello!’); } // Hello! console.log(hoge.indexOf(‘56’)); // 1
  16. 16. 状況に応じて柔軟に 型が変換される
  17. 17. JavaScript 第6版 P49 表3-2 からの引用
  18. 18. ラッパーオブジェクト (1 / 2) var s = new String(‘ABC’); console.log(s.toLocaleLowerCase()); // abc var n = new Number(12300000); console.log(n.toExponential()); // 1.23e+7 var b = new Boolean(false); if (b) { console.log(b); } // true
  19. 19. ラッパーオブジェクト (2 / 2) console.log( ‘ABC’.toLocaleLowerCase()); // abc console.log( 12300000.toExponential()); // 1.23e+7
  20. 20. 明示的な型変換 Number(‘3’) // 3 String(false); // ‘false’ Boolean([]) // true Object(3) // new Number(3)
  21. 21. オブジェクトから基本型への変換 すべてのオブジェクトは変換メソッドを 2 つもってい る ● toString() ● valueOf()
  22. 22. toString() オブジェクトを表す文字列を返す new Number(3).toString() // ‘3’ ({x: 1, y: 2}).toString() // ‘[object Object]’ [1, 2, 3].toString // ‘1,2,3’
  23. 23. valueOf() はっきり定義されていない 基本的は、オブジェクトを基本型値に変換するの が仕事 new Number(3).valueOf(); // 基本値型の 3 new String(‘abc’).valueOf(); // 基本値型の ‘abc’ ({x: 1}).valueOf() // そのままオブジェクトを返す
  24. 24. オブジェクトから文字列に変換 (1 / 2) 1. toString() の実行を試みる 2. valueOf() の実行を試みる 3. TypeError を投げる
  25. 25. オブジェクトから文字列に変換 (2 / 2) var hoge = { toString: function() { return ‘toString’; }, valueOf: function() { return ‘valueOf’; } }; console.log(hoge); // toString
  26. 26. オブジェクトから数値に変換 (1 / 3) 1. valueOf() の実行を試みる 2. toString() の実行を試みる 3. TypeError を投げる
  27. 27. オブジェクトから文字列に変換 (2 / 3) var hoge = { toString: function() { return 1; }, valueOf: function() { return 2; } }; console.log(hoge - 2); // 0
  28. 28. オブジェクトから文字列に変換 (3 / 3) var hoge = { toString: function() { return 1; }, valueOf: function() { return { a: 2 }; } }; console.log(hoge - 2); // -1
  29. 29. お わ り

×