JavaScript学习笔记(11):Function类型

1,说起来js中什么最有意思,我想应该就是函数了——而有意思的根源,则在于函数实际上是对象。

2,每个函数都是Function类型的实例。声明或定义一个函数,你可以这样写:

function sum1(num1,num2){

return num1+num2;

};

或者这样写:

var sum2 = function(sum1,sum2){

return num1+num2;

};

还有一种2B的写法:

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

虽然不推荐这么写,但是这个写法可以帮助你更好的理解上面那句话:“每个函数都是Function类型的实例”。

3,一个函数可能有多个名字,因为函数名只是一个指针。

function sum4(num1,num2){

return num1+num2;

};

console.log("sum4(10,10)="+sum4(10,10));

var sum4_1 = sum4;

console.info("sum4_1(10,10)="+sum4_1(10,10));

sum4 = null;

//下面这句会报错,因为sum4已经不是一个函数类型了。

//console.log("sum4(10,10)="+sum4(10,10));

console.log("sum4_1(10,10)="+sum4_1(10,10));

4,js中过的Function类型对象没有重载,因为函数名只是一个指针。

function f1(num){

return num+100;

};

function f1(num){

return num+200;

};

console.info("f1(100)="+f1(100));

5,解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁。解析器会率先读取函数声明,并使其在执行任何代码前可用。值域函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行。

6,函数名本身就是个变量,所以函数也可以作为值来使用。

function callSomeFunction(someFunction,someArgument){

return someFunction(someArgument);

};

function add10(num){

return num+10;

};

var result1 = callSomeFunction(add10,10)

console.log(result1);

function getGreeting(name){

return "Hello"+name;

};

var result2 = callSomeFunction(getGreeting,"tom");

console.log(result2);

7,当然,你也可以在一个函数中嵌套另一个函数。

function createComparisonFunction(propertyName){

debugger

return function(object1,object2){

var value1 = object1[propertyName];

console.info(value1);

var value2 = object2[propertyName];

console.info(value2);

if(value1 < value2){

return -1;

}else if(value1 > value2){

return 1;

}else{

return 0;

}

};

};

var data = [{name:"tom",age:22},{name:"lucy",age:25}];

data.sort(createComparisonFunction("name"));

console.info(data);

8,函数的内部属性。在函数内部,有两个特殊的对象:argunents和this。arguments是一个类数组对象,里面保存着传入函数的所有参数。

9,还有一些其他的属性,比如length,它表示函数希望接受的命名参数的个数。注意,是希望。这意思是说在某种程度上说js函数传入参数时你可以多给点或者少给点儿都没事。

10,“在ECMAScript核心所定义的全部属性中,最内人寻味的就要数prototype属性了。”(看了蛮久资料 看得还不是很懂,这里先放下,留个坑以后慢慢填。


本节源码下载地址:JavaScript学习笔记(11):Function类型

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文档内容参考 《JavaScript 闯关记》之函数 函数是一段代码,它只定义一次,但可以被执行或调用任意次。在...
    穿越人海遇见你阅读 1,011评论 0 1
  • Chapter 5 引用类型 Object类型 创建Object实例new Object()var person ...
    云之外阅读 394评论 0 0
  • 第一章: JS简介 从当初简单的语言,变成了现在能够处理复杂计算和交互,拥有闭包、匿名函数, 甚至元编程等...
    LaBaby_阅读 1,689评论 0 6
  • 变量 声明变量 命名变量区分大小写的语言第一个字符是字母或下划线_,数字不能作为第一个字符字符必须是字母,数字或者...
    flyingtoparis阅读 833评论 0 0
  • 第三章 基本概念 3.1 语法 ECMAScript标识符一般采用驼峰大小写格式,也就是第一个字母小写,剩下的每个...
    小雄子阅读 568评论 0 1