JS函数

200 阅读2分钟

概述 一堆可以反复调用的代码块

具名函数

声明方式

function x(输入1,输入2){   //输入
         return undefined   // 输出 '写不写return  都默认会有'
}

变量和函数的区别 变量可以是函数 (7中数据类型 number string Object 等等), 但函数只能是对象里边的函数 变量的特例

函数的名字 x

console.log(x) 括号内只会接收字符串 不是字符串会自动调用toString() 每个对象都有toString()方法

匿名函数

var x x= function(input1,input2){ return}

不能单独使用 声明的函数必须赋给一个变量

具名函数 也赋给一个赋给变量

var x=function y(input1,input2){return

只有此 function内才可以访问    
外边访问不到

}

不等同与下面这种方法 function y(v1,v2){ return }

'不一致性'

window.Function 函数对象

new function('x','y','return x+y')

箭头函数

(x,y)=>{return x+y }

例子
1).sum=(x,y){return x+y} 2).sum=(x,y)=>x+y 箭头后 只有一句话 可以省略花括号 3).sum=x=>n*2 参数只有一个可以省略小括号

函数的name属性

如果声明一个函数 那么这个函数的 .name属性就是她的名字

###########################################################

function 求三角形面积(x,y){ var m=x*y var n=m/2 return n }

求三角形的面积(33,66) 求三角形的面积(66,99)

可以反复调用

函数的存储 是以字符串定时存储

函数名.toString()

evel('1+1') 给什么字符串都当到代码执行
//2

函数名字.call() apply bind

.this() .arguments()

arguments看起来像是个数组 她的__proto__ 是Object 她的原型链没有Array.pototype 没有.push() 属性

call stack 调用栈

先进后出

作用域

闭包

如果一个函数使用了他范围之外的变量 那么(这个函数+这个变量) 就叫做闭包