5.
strict mode
"use strict"; // global
!
function() {
"use strict"; // innner only
}
エラーを出やすくする
6.
変数の巻き上げ
(function () {
console.log(a);
var a = 'aaaa';
console.log(a);
})();
(function () {
var a;
console.log(a);
var a = 'aaaa';
console.log(a);
})();
Before
After
10.
スコープ
超重要基礎
var globar = 'global desu';
!
function scope1() {
var locar = 'local desu';
console.log(globar); // global desu
function scope2() {
var locarSecond = 'local mark2 desu';
console.log(locar); // local desu
}
console.log(locarSecond); // ReferenceError: locarSecond
is not defined
}
console.log(locar); // ReferenceError: locar is not
defined
11.
必須知識です
関数閉包はプログラミング言語における関数オ
ブジェクトの一種。いくつかの言語ではラムダ
式や無名関数で実現している。引数以外の変数
を実行時の環境ではなく、自身が定義された環
境(静的スコープ)において解決することを特
徴とする。関数とそれを評価する環境のペア
であるともいえる。この概念は少なくとも
1960年代のSECDマシンまで ること
ができる。
from wikipedia
クロージャとは
12.
クロージャの例
var incrementGenerator = function (start) {
var inc = function () {
start += 1;
return start;
}
return inc;
};
!
var inc1 = incrementGenerator(0);
var inc2 = incrementGenerator(0);
!
inc1(); // 1
inc2(); // 1
inc1(); // 2
inc2(); // 2
29.
The History and Future
そして、次のバージョンであるECMAScript6には
言語の機能そのものにモジュールの仕組みが……!
当初のJavaScriptにはモジュールや名前空間にあたる仕組みがなかった
それを補うためにいくつかのツールやライブラリが考案された
代表的な仕様がCommonJSである
CommonJSとはサーバ、クライアント、その他環境での標準的な仕様を定めるもの
その中でモジュールの仕様も策定された
30.
Present day, Present time
未だ黎明期。
ライブラリやツールの力を借りつつ、きたるECMAScript6になるべく
移行しやすい方法をとるべき。
47.
Dependency Resolution
greet.js
var MESSAGE = require('./content.js');
var Greeter = require('./hello.js');
var g = new Greeter(MESSAGE);
!
module.exports = g;
document.write(
require('./greet.js').greet()
);
entry.js
Be the first to comment