1.Function Argumentsexpress
JavaScript 函数的参数函数
类型能够是 复杂类型如 Object or Array 和简单类型 String Integer null undefined;当参数是 复杂类型的时候,将会把 复杂类型的 引用传出 函数体内,也就是传入函数内的不是 复杂类型的副本,而是其在内存中的指针。当参数是 简单类型的时候,就会直接传值进入函数体内。look the below demostrated:spa
var obj={name:'joe'};指针
(function changeName(obj){blog
obj.name='new joe';ip
})(obj);内存
console.log(obj.name); //new joe作用域
var num=2;get
(function(num){it
num=3;
})(num);
console.log(num); //2
JavaScript 函数类型
函数声明和函数表达式
函数声明以下:
function fname(){
}
函数表达式以下:
var fname=function(){
}
函数声明能够在 解释器 解析以前调用, 函数表达式从另外一个角度来看是赋值表达式的子集。 赋值完,才能够调用;for example:
declaration(); //declaration
function declaration() {
console.log('declaration');
}expression(); // function undefined
var expression = function() {
console.log('expression');
}运行 expression 函数为 抛出异常,可是 declaration函数运行正常。这就是区别。
由于 JavaScript在程序执行以前,声明函数已经被解析了,因此在函数定义以前能够去 调用它。
而函数表达式 则是在 函数未赋值给变量以前,是不能调用的。因此,好的代码格式是 把 变量声明在
前面,下面看一个例子:
var expression;console.log(typeof expression);//undefined
console.log(typeof declarations); // function
if(true) {function declarations() {
console.log('dec');
}expression = function() {
console.log('exp')
}
}declarations(); //dec
expression(); //exp
function scope
JavaScript 是一函数来区分做用域的。
var num=20;
(function (){
console.log(num) //30
num=30;
})();
console.log(num); //20
原文地址:http://markdaggett.com/blog/2013/02/15/functions-explained/