日期:2014-05-16  浏览次数:20391 次

JavaScript读书笔记三

?

函数的定义一般如下:

function sum(num1 ,num2) {
    return num1 + num2;
}
?

在使用函数表达式时,没有必要使用函数名–通过变量sum即可以引用函数,另外,还要注意函数末尾有一个分号

var sum = function(num1, num2) {
    return num1 + num2;
};
?

最后一种方法,但是不值得推荐

?

var sum = new Function("num1", "num2", "return num1 + num2");

javascript函数没有重载

解析器会率先读取函数声明,并使其在执行任何代码之前可用,至于函数并表达式,则必须等到解析器执行到它所在的代码行,才会真正被执行

?

与个人博客同时更新

1 楼 myter7 2011-03-07  
写的不错哦。
不过, 有点疑问。
“在使用函数表达式时,没有必要使用函数名–通过变量sum即可以引用函数,另外,还要注意函数末尾有一个分号”
这句话是什么意思? 不是很理解。 函数末尾一定要有分号吗? 或许没有也行吧。
2 楼 gyht0808 2011-03-07  
myter7 写道
写的不错哦。
不过, 有点疑问。
“在使用函数表达式时,没有必要使用函数名–通过变量sum即可以引用函数,另外,还要注意函数末尾有一个分号”
这句话是什么意思? 不是很理解。 函数末尾一定要有分号吗? 或许没有也行吧。

就是上面第二种声明方法,类似变量的声明 var xxx = function() {}; 来声明一个函数,调用的时候用变量名调用就可以了,然后因为是变量方法声明,声明完后就要加上分号,即大括号后面
3 楼 amwjx 2011-03-07  
因为是赋值表达式,所以语句结束要加分号。
4 楼 myter7 2011-03-08  
amwjx 写道
因为是赋值表达式,所以语句结束要加分号。


你测试过了么? 你可以试试。javascript如果没有分号,会在每一行的末尾自动插入分号。


<script>
var sum = function(num1, num2) { 
return num1 + num2; 
}
alert(sum(1,2));
</script>


JS的函数本身就是一个对象, 所以第三种才是JS函数原始的创建方式。
而前两种是JS提供的一种语法糖, 即通过字面量的方式来创建函数。
所以说, 他最后还是得转换为原始的对象创建方式。

这是我的理解。
5 楼 _piggy_ 2011-03-08  
我猜你的目的是求两个数的和,但是js中"+"的默认是字符串加,所以会出现以下情况:

var a = 1;
var b = 2;
var c = sum(a,b);
// c = 12;
6 楼 myter7 2011-03-08