by shigemk2

当面は技術的なことしか書かない

第14回 ECMA-262 Edition5.1読書会 #ecma262

ecma262reading.doorkeeper.jp

ES6

github.com

techlife.cookpad.com

資料

発表しました。

ecma262-14.markdown - Grip

ポイント

  • 関数定義はfunction
  • functionの名前は省略できるし(無名関数)、中身も省略できる
  • strictコードは関数の外でも中でも書ける
  • 引数は可変長
  • 関数の中身(FunctionBody)を省略した場合の戻り値はundefined
// オブジェクトが作られた時点で実行されているわけではなく、再帰で呼び出すときにvar aは見えているし、存在している
// 危ない書き方
var a = function (n) {
  if(n < 1) {
    return 1;
  } else {
    return n * a(n-1);
  }
};
console.log(a(10));
// var a = 2;
// このhogeは書き換えられないので安全
var b = function hoge(n) {
  if(n < 1) {
    return 1;
  } else {
    return n * hoge(n-1);
  }
};
console.log(b(5));

var hoge = function c() {
  var x = 123;
  return x;
};

console.log(hoge()); // hogeは呼び出せるがcは呼べない
// console.log(c());
// console.log(c.x);

// 関数の中身も省略できる その場合はundefined
function d() {
};
console.log(d());

// 関数の中身を定義する
function e() {
  return "e";
};
console.log(e());

// 演算子の落とし穴(11.6 11.7)
var f1 = new String("123") + "4";
console.log(typeof(f1));
var f2 = "123" + 4;
console.log(typeof(f2));
var f3 = "123" - 4;
console.log(typeof(f3));
// オブジェクト同士を連結してもstring
var f4 = new String("123") + new String("4");
console.log(f4);

ECMA-262 Edition 5.1を読む

ECMA-262 Edition 5.1を読む