记录一下阅读蝴蝶书的笔记,本篇为第一部分包含书中前三章内容:语法、对象和函数。
函数是一块JavaScript代码,被定义一次,但可执行和调用多次。
JS中的函数也是对象,所以JS函数可以像其它对象那样操作和传递。
所以我们也常叫JS中的函数为函数对象。
例如:
function foo(x, y) {
if (typeof x === 'number' &&
typeof y === 'number') {
return x + y;
} else {
return 0;
}
}
foo(1, 2); // 3
function outer() {
var localVal = 30;
return localVal;
}
console.log(outer()); //30
function outer2() {
var localVal = 30;
return function() {
return localVal;
};
}
var func = outer2();
console.log(func()); //30
对于第一个普通的函数,在执行过之后,它的局部变量就可以被释放。
对于第二个函数,localVal
是不能被释放的。因为调用 outer2()
后,返回的是匿名函数,匿名函数可以访问外部的 outer2()
中的局部变量,并返回了这个局部变量 localVal。当 outer2()
赋值给 func
后,再次调用 func()
,仍能访问到局部变量 localVal
。这种情况就是闭包。
以Mac系统为例 主要环节有:安装Ruby,安装RubyGems,安装jekyll,安装代码高亮插件,安装node.js
brew install ruby
ruby -v