javascript 学习 第6天 函数
2018-01-19 22:13
435 查看
1,函数
是一些特定功能的代码组合
ECMScript 中的函数
本质上是一个对象
函数的名字是一个指向对象的指针
这决定了函数有两种不同的定义方法
2,声明方法定义函数
function fn(){}
3,函数表达式方法定义函数
可以定义为一个 Function 引用类型变量
var fn=new Function();
其中最后一个参数是函数体 前面的参数是函数的参数
可以简化为
4,使用函数声明方式定义的函数会被把函数体提到前面
5,使用函数表达式方法定义的函数,只会把声明提前,并用undefined 初始化,函数体并不会被提前,调用会报错
6,执行
也叫调用
7,返回值
当函数没用定义返回值的时候 默认返回 undefined 作为返回值
用 return 定义返回值
8,参数
函数的参数的类型不确定
函数的参数个数不确定
用 arguments 来获取参数列表 会获得一个对象
参数是按值传递的
不会按引用传递
9,匿名函数
函数名只是一个指针
函数没了函数名 并不会对自身的功能造成什么改变 依然可以使用
匿名函数在编写回调函数时比较方便
尽量给匿名函数 加上名字
10,回调函数
就是把函数体本身作为参数传递给另一个函数
11,属性和方法
函数是一个特殊的对象 有自己的属性和方法
length 属性 就是在定义函数的时候所定义的参数的个数
和调用的时候传入的参数的个数无关
A.call(B,a,b,c,...) 方法
在B方法的上下文 传入参数 a,b,c.. 执行 A方法
A.apply(B,[a,b,c,...])方法 和 call 类似 只是参数是放一起传入
A.bind(B,a,b,c,...) 并不会立即执行 而 call 和 apply 是立即执行的
是一些特定功能的代码组合
ECMScript 中的函数
本质上是一个对象
函数的名字是一个指向对象的指针
这决定了函数有两种不同的定义方法
2,声明方法定义函数
function fn(){}
3,函数表达式方法定义函数
可以定义为一个 Function 引用类型变量
var fn=new Function();
其中最后一个参数是函数体 前面的参数是函数的参数
var fn=new Function("a","b","console.log(a+b)") undefined fn(1,2) VM101:3 3
可以简化为
var fn=function(a,b){ console.log(a+b) } undefined fn(1,2) VM165:2 3
4,使用函数声明方式定义的函数会被把函数体提到前面
fa(1,2) function fa(a,b){ console.log(a+b) } VM253:6 3
5,使用函数表达式方法定义的函数,只会把声明提前,并用undefined 初始化,函数体并不会被提前,调用会报错
console.log("sum:"+sum); sum(1,2); var sum=function(a,b){ console.log(a+b) }; VM476:1 sum:undefined VM476:2 Uncaught TypeError: sum is not a function at <anonymous>:2:1 (anonymous) @ VM476:2
6,执行
也叫调用
7,返回值
当函数没用定义返回值的时候 默认返回 undefined 作为返回值
用 return 定义返回值
8,参数
函数的参数的类型不确定
函数的参数个数不确定
用 arguments 来获取参数列表 会获得一个对象
var obj; function sum(){ obj=arguments; }; undefined sum(1,2,3,4,5,6) undefined obj
参数是按值传递的
不会按引用传递
var zhi_1={ value:'我是值 zhi_1 这个变量的值 所描述的 地址 指向的 内存位置 所存储的东西!' }; var zhi_2={ value:'我是值 zhi_2 这个变量的值 所描述的 地址 指向的 内存位置 所存储的东西!' } function change(zhi_1){ zhi_1.value=" zhi_2 是不会把值传给我的!" zhi_1=zhi_2; return zhi_1.value; } undefined change(zhi_1) "我是值 zhi_2 这个变量的值 所描述的 地址 指向的 内存位置 所存储的东西!" zhi_1.value " zhi_2 是不会把值传给我的!"
9,匿名函数
函数名只是一个指针
函数没了函数名 并不会对自身的功能造成什么改变 依然可以使用
匿名函数在编写回调函数时比较方便
尽量给匿名函数 加上名字
function sum(a,b,callback){ return callback(a,b) } undefined sum ƒ sum(a,b,callback){ return callback(a,b) } sum(1,2,function sum1(a,b){return a+b}) 3
10,回调函数
就是把函数体本身作为参数传递给另一个函数
11,属性和方法
函数是一个特殊的对象 有自己的属性和方法
length 属性 就是在定义函数的时候所定义的参数的个数
和调用的时候传入的参数的个数无关
function fn (a,b,c){} undefined fn.length 3
A.call(B,a,b,c,...) 方法
function f1(a,b,c){ return a+b+c; } function f2(a,b){ return a+b; } undefined f1.call(f2,1,2,3) 6 f2.call(f1,1,2,3) 3
在B方法的上下文 传入参数 a,b,c.. 执行 A方法
A.apply(B,[a,b,c,...])方法 和 call 类似 只是参数是放一起传入
A.bind(B,a,b,c,...) 并不会立即执行 而 call 和 apply 是立即执行的
相关文章推荐
- javaScript语言精粹 学习笔记(4.3函数调用)
- javascript学习(3)——[基础回顾]函数
- Javascript学习笔记之函数篇(五) : 构造函数
- javascript学习之函数(8)—— 函数 参数传递
- Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
- 李刚JavaScript视频学习-函数的定义
- 菜鸟学习JavaScript小实验之函数引用
- javascript 学习之 函数 - 方法
- JavaScript学习记录day6-函数变量作用域、解构赋值与方法
- Javascript 学习笔记2 —— 函数
- 跟我学习javascript的函数和函数表达式
- javaScript学习笔记2---函数
- Javascript学习5 - 函数
- JavaScript基础学习之-JavaScript权威指南--8.1-8.4函数
- 韩顺平 javascript教学视频_学习笔记9_js函数调用过程内存分析_js函数细节
- JavaScript学习——函数内部属性
- JavaScript语言精粹学习笔记(4)——函数2
- javascript学习之内置顶层函数
- JavaScript学习笔记之JS函数
- Javascript学习笔记三 之 函数