码迷,mamicode.com
首页 > Web开发 > 详细

web Function函数

时间:2018-11-12 00:20:58      阅读:366      评论:0      收藏:0      [点我收藏+]

标签:个数   概念   ESS   state   函数参数   int()   引用   UNC   接受   

 javascript中函数定义

js中函数一般定义如下:

function functionName(arg0,arg1,arg2,...,argN) {

statements;
}
其中functionName是函数名,arg0,…argsN是参数,没有具体类型,可以接受任何类型的参数,例如Boolean,Number,String,Object等。function可以有返回值(返回值可以返回任何类型),也可以没有返回值

来看一个function示例:

function printHello(message) {
alert(message);
}

printHello("helloworld");
将会弹出 helloworld

带返回值的函数

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

alert(sum(2,6));
输出8
这样来看,其实和java中也差别不大,但是关键的是在js中也允许这样的代码存在

alert(sum(2,6));
var res = sum(1);
alert(sum(1,2,3));
var res2 = sum;
alert(sum());
这样一来,和java中相差就很大了。可以看到我们 定义函数是两个参数,但是调用却可以是0个,1个,甚至3个参数。并且函数名还可以赋值给其他变量。这是怎么回事呢?下面讲解。

3 javascript中function注意事项
1 javascript中function的本质

javascript中函数本质上是一个对象,每个函数都是Function的实例,都与其他对象一样有属性和方法。由于函数是对象,因此函数名实际上是指向函数的一个指针,函数名不会与具体的某个函数绑定。

理解以上概念对我们理解javascript中函数非常有用,这些解释了以下代码为什么会执行结果相同

var res2 = sum;
res2(1,2);
sum(1,2)
以上代码结果均是3

 javascript中函数与java的异同

个人觉得javascript中函数与java中的主要区别如下:

js中函数是一个对象,函数名是一个指针。java中函数是对象的一个方法,依附于对象,不能独立存在。
java中就不说了,很好理解。js中刚刚已经介绍过了,为了理解js中函数是一个对象,我们可以这样定义sum函数:

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

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

alert(sum(1,3));
alert(sum1(1,3)) ;
以上两个结果均输出4,可以看到,js中函数确实是一个对象。函数名仅仅是一个指向该函数的指针。

js中函数没有重载,参数没有类型校验,调用可传递0到N个参数
js中函数是一个对象,函数名是一个指针,因此对象没法重载,定义多个相同名字的函数等于将该对象指向多个函数,最终肯定会以最后的定义为准。

function print() {
return "print1";
}

function print(message) {
return "print2";
}

alert(print());
alert(print("ppp"));
结果都是输出print2,可见最终print2函数都是返回print2。
另外,js中可以把没有返回值的函数赋值给某个结果变量,如下:

function noReturn() {
var i = 0;
}

var res = noReturn();
//输出 undefined
alert(res);
输出结果是undefined,如果一个函数没有返回值,被赋值时,默认返回undefined

js中函数内部有两个特殊对象:arguments,this
我们知道js中函数可以传递0到N个参数,那这是怎么回事呢?原因是js总函数的参数是用一个数组来表示的,这个数组就是arguments数组,不论传递的多少个参数,函数始终接受到的参数都是这个数组。可以用数组的形式来访问函数参数。如下:

var sum1 = function (num1,num2) {

//arguments length:2 1 3
console.log("arguments length:" + arguments.length + " " + arguments[0] + " " + arguments[1]);
return num1 + num2;
};

alert(sum1(1,3));
当调用时,我们可以看到控制台输出如下结果:
arguments length:2 1 3

this对象

this的行为与java中类似,它引用的是函数执行的环境对象–也可以说是this值(当在网页全局作用域中调用函数时,this对象引用的是window对象)。请参考下面例子。

window.color = "red";

//创建一个对象o 指明具有color属性
var o = {color:"blue"};

function sayColor() {
console.log(this.color);
}

//red
sayColor();

o.saycolor = sayColor;
//blue
o.saycolor();
可以看到,调用sayColor()是,当前this对象是window对象,当把sayColor赋值给o时,后面this对象指代的就是o对象了。

web Function函数

标签:个数   概念   ESS   state   函数参数   int()   引用   UNC   接受   

原文地址:https://www.cnblogs.com/zl1234/p/9944312.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!