从零开始学JavaScript(一)- 理解函数
楔子
老姚写这篇笔记开头就说:学JS,不懂事件机制,基本可以说学了JS,就是白学。
看到这句话时的我十分汗颜,如果说,我了解事件机制的话,我也许就不会点开这篇笔记,而现在的我就是那个白学了的。
重新开始审视自己,从事WEB前端开发这份工作已经半年有余,从来没有认认真真的写过一篇技术性的笔记。或许我还不是一个合格前端开发工程师,空有一腔热情却难以施展。以此作为第一篇笔记,勉励自己。
关于这篇笔记并不打算写对于事件机制的理解,毕竟我还是个白学了JS的人,班门弄斧简直是跳梁小丑。那就从最基础的开始写起。(zhouAlex066)
函数(function)
根据W3School的解释,函数是由事件驱动的,或者当它被调用时执行的可重复使用的代码块。
举个简单点的例子:alert();它是由JavaScript封装的一个可重复使用的函数。
既然提到alert()警示窗,那么还有confirm()确认窗,以及prompt()可输入对话窗。
alert()是初学JavaScript时调试代码用到最多的函数,后来偶遇了console.log()/console.dir,使用到alert()的次数才逐渐减少,当然,调试代码并不是只有这两种方式,而这篇笔记的主要内容也不是讲JavaScript的调试,网上也有很多很好调试笔记,我就不再赘述了(附:阮一峰<Firebug控制台详解>)。
confirm()是用于显示一个带有指定消息和确定及取消按钮的对话框。点击按钮返回一对布尔值(Boolean),如果用户点击确定按钮,则 confirm() 返回 true。如果点击取消按钮,则 confirm() 返回 false。
prompt()是用于显示可提示用户进行输入的对话框。如果用户单击提示框的取消按钮,则返回 null。如果用户单击确认按钮,则返回输入字段当前显示的文本。
函数的声明方式:关键字 function 函数名(一组参数){置于括号中的待执行代码};
调用函数名时,会执行{置于括号中的待执行代码};由此牵引出“函数是由事件驱动的,或者当它被调用时执行的可重复使用的代码块。”
提示:JavaScript 对大小写敏感。关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数。
在调用函数时,可以向函数传递值,这些值被称为参数。参数可以是多个,用逗号隔开。这些参数可以在函数中使用。参数还分形参与实参,这些将在实际举例中出现。
有时,我们会希望函数将值返回调用它的地方。通过使用 return 语句就可以实现。在使用 return 语句时,函数会停止执行,并返回指定的值。
W3School例:
function myFunction(){
var x=5;
return x;
}
var myVar=myFunction();
myVar 变量的值是 5,也就是函数 "myFunction()" 所返回的值。
我所知道的函数构造语法有三种:(部分摘自新浪博客)
function functionName(arg0, arg1, ... argN) { statements }//function语句
var function_name = new Function(arg1, arg2, ..., argN,function_body);//构造函数,令写篇幅详细说明
var function = function(arg0, arg1, ... argN) { statements };
函数直接量是一个表达式,它可以定义匿名函数。函数直接量的语法和function语句非常相似,只不过它被用作表达式,而不是用作语句,而且也无需指定函数名
如果函数无明确的返回值,或调用了没有参数的 return 语句,那么它真正返回的值是 undefined。
ECMAScript中的函数不能重载 。可用相同的名字在同一个作用域中定义两个函数,而不会引发错误,但真正使用的是后一个函数。考虑下面的例子:
function doAdd(iNum) {
Alert(iNum + 100);
}
function doAdd(iNum) {
Alert(iNum + 10);
}
doAdd(10);//20
不过可以使用arguments对象避开这种限制(关于对arguments的讨论,将在另一篇笔记中记录)。
去年刚接触JavaScript的时候,对于自定义函数很难理解,脑袋里装着十万个为什么但终究还是弄得个一知半解。
翻了翻当时写的笔记,第一次对自定义函数的定义是:自己封装的一定功能函数,供自己使用,原来我们熟知的alert()是JS的内置函数。(前篇提及过)
第一遍没有理解,于是我又用通俗的话写了第二次理解:自己定义一个可以重复使用的命令(行为)。笔记的旁边还有一排小字,函数即是命令,也称之为功能,方法。对于这个理解,我也不知道是对还是错。
当需要在函数调用的时候,传递真实的参数,称之为实参,去替换函数表达式中的自定义参数,也就是形参。
形参用于触发多事件源时,多事件源是指的相同条件下,不同名的事件源;(涉及到事件部分,另开篇幅详细介绍)