このスライドはThomas bahnさんのスライド「JavaScript Blast」を元に書かれたものです。

Tomas Bahn

Presenter Notes

変数の定義

  • シンプルな変数宣言

var name;

  • 変数宣言と値の代入

var name = value;

  • ベストな宣言方法

    すべてのローカル変数はその関数のトップで宣言する。

JavaScriptはブロックスコープではなく関数スコープ

Presenter Notes

変数の型

JavaScriptには6つの型が存在する

  • String
  • Number
  • Boolean
  • Object
  • null
  • undefined

特別な文字列

  • ¥ escape character
  • ¥¥ one backslash
  • ¥' simple quote
  • ¥" double quote
  • ¥n new line
  • ¥r carriage return
  • ¥t tabulator
  • ¥u Unicode character, e.g. ¥u042F ゙ Я

Presenter Notes

String オブジェクト

  • Useful methods of the String object
  • toUpperCase(), toLowerCase(): like LotusScript
  • charAt(position): character at given position
  • indexOf(searchString): searchStringの位置を返す
  • indexOf(searchString, startPos): searchStringをstartPosから探索して位置を返す
  • lastIndexOf(suchstring): indexOfを後ろから探索する
  • substring(start, end): startから
  • slice(start, end): like substring, but when end is negative, length is added (counts from end)
  • split(separator): 配列へ分割

Presenter Notes

文字列結合

  • +演算子 や += で文字列結合する方が速い(しかし、IE7以下のブラウザは逆)
  • IE7以下では array.join を使い文字列結合したほうが速い
  • string.concat は殆どの場合 + or += などより遅い

そこまで劇的に差がでるケースではないなら好みでいいと思う IE6,7のためにArray.join("") による文字列連結を使うべき - 0xFF

Presenter Notes

Number オブジェクト

  • 全ての数字64bit float point("double")
  • Number.MAX_VALUE = 1.7976931348623157e+308 Number.MIN_VALUE = 5e-324
  • Number.toString(basis)でn進数で表現できる。 basisは基数

例えば

var a = 100;
a.toString(16)   "64"
a.toString(2)   "1100100"

Presenter Notes

Heads up: parseInt と 8進数

  • 0x のprefixは16進数 e.g. 0xFF
  • 0 のprefixは8進数 e.g. 014 (10進数で12)

Presenter Notes

parseInt()の使用上の注意

  • parseInt("08")// 0
    • 期待とは異なる
    • 不正な文字が来るまでパースする
  • parseInt(08) // Error: 08 is not a legal ECMA-262 octal constantb

いつも第二引数の基数を指定しておくと安心

  • parseInt("08", 10); // 8

Presenter Notes

Math Object

Mathオブジェクトに便利なメソッド

  • Math.PI 3.141592653589793
  • Math.E 2.718281828459045
  • Math.SQRT2 1.4142135623730951
  • Math.LN2 0.6931471805599453
  • Math.LN10 2.302585092994046
  • Math.random() 0以上1未満の数値がランダム
  • Math.round(), Math.floor(), Math.ceil()
  • Math.sin(), Math.cos(), Math.atan()
  • Math.min(), Math.max()
  • Math.pow(), Math.sqrt()

Presenter Notes

NaN = Not a Number

Infinity

  • 1/0 -> Infinity
  • Infinity > Number.MAX_VALUE
  • 1/Infinity -> 0
  • Infinity/Infinity -> NaN(Not a Number)

Presenter Notes

None - Chrissy Wainwright - Plone Symposium East