JavaScript学习笔记(4):函数

1,“函数对于任何语言来说都是一个核心概念。通过函数可以封装任意多条语句,而且可以在任何地方任何时候调用执行。ECMAScript中的函数使用function关键字来进行声明,后跟一组参数以及函数体。”

function sayHi(name,message){

alert("Hello,"+name+","+message);

}

var name1="Lilei";

var message1="look how they shine for you!";

sayHi(name1,message1);

2,“js中的函数在定义时不需要指定是否有返回值。实际上,任何函数任何时候都可以通过return语句后面跟要返回的值来实现返回值。”

3,“ECMAScript函数的参数与大多数其他语言的参数有所不同。ECMAScript函数并不介意传递进来多少个参数,也不在乎传来的的参数是什么数据类型。也就是说,即便你定义的函数只接受两个参数,在调用这个函数时也未必一定要传递两个参数。可以传递一个,三个甚至不传递参数,而解析器永远不会有什么怨言(这解析器脾气真好)。之所以会这样,原因是ECMAScript中的参数在内部是用一个数组来表示的。函数接收到的始终是这个数组,而不关心数组中包含哪些参数(如果有参数的话)。如果这个数组中不包含任何元素,无所谓;如果包含多个元素,也没有问题。实际上,在函数体内就可以通过arguments对象来访问和这个参数数组。从而获取传递给函数的每一个参数。其实,arguments对象只是与数组类似(它并不是Array的实例),因为可以使用方括号语法访问它的每一个元素,使用length属性来确定传递进来多少个参数。在前面的例子中,sayHi()函数的第一个参数的名字叫做name,而该参数的值也可以通过访问arguments[0]来获取。”

4,对于js函数来说,命名的参数只提供便利,并不是必须的。

function sayHi(){

alert("Hello"+arguments[0]+","+arguments[1]);

}

5,可以在函数体内部对函数的参数进行重写。

function doAdd(){

if(arguments.length ==1){

alert(arguments[0]+10);

}else if(arguments.length==2){

alert(arguments[0]+arguments[1]);

}else(

alert("参数个数大于两个了。")

)

}

doAdd(10);

doAdd(23,39);

doAdd(23,34,123);

6,“关于arguments的行为,还有一点比较有意思的是,它的值永远与对应命名参数的值保持同步。”

function add(num1,num2){

arguments[1]=100;

window.console.info("两个参数之和为:"+(arguments[0]+arguments[1]));

}

add(352,4678);

7,“ECAMScript函数不能像传统意义上那样实现重载。而在其他语言中,可以为一个函数编写两个定义,只要这两个定义的签名(接受的参数类型和数量)不同即可。如前所述,ECMAScript函数没有签名,因为其参数是由包含零或者多个值得数组来表示的,而没有函数签名,真正意义上的重载是不可能做到的。”

如果我们编写了两个名字和参数个数一样的函数,则后面写的函数会覆盖掉前面的函数。

function addSomeNumber(num){

return num+100;

}

function addSomeNumber(num){

return num+200;

}

window.console.info(addSomeNumber(100));

8,小结

a,js中的基本数据类型包括:Undefined,Null,Boolean,Number,String。

b,与其他语言不同,js没有为整数和浮点数值分别定义不同的数据类型,Number类型可用于表示所有数值。

c,js中也有一种复杂的数据类型,即Object类型,该类型是这门语言中所有对象的基础类型。

d,严格模式为这门语言容易出错的地方施加了限制。

e,js提供了很多与c以及其他类c语言中相同的基本操作符,包括算术操作符,布尔操作符,关系操作符,相等操作符以及赋值操作符等。

f,js从其他语言借鉴了很多流程控制语句,例如if语句,for语句和switch语句等,js中的函数与其他语言中的函数有很多不同的地方,特别最参数的理解上。

g,js无需指定函数的烦hi之,因为任何js函数都可以在任何时候返回任何值。未指定返回值的函数返回的是一个特殊的undefined值。

h,js中的函数没有函数签名的概念,因为其函数参数是以一个包含零或者多个值得数组的形式传递的。

i,可以向js函数传递任意数量的参数,并且可以通过arguments对象来访问这些参数。

j,由于不存在函数签名的特性,js函数不能重载。


本节源码下载地址:JavaScript学习笔记(4):函数

你可能感兴趣的:(JavaScript学习笔记(4):函数)