一、函数声明function(){}
是function +函数名字(){内容}
调用函数是 函数名字();
function printname(){console.log('byron');}
函数表达式
var 变量=匿名函数
var printname=function(){console.log('byron');};
如果函数定义的时候变量少于,输出的,未定义的则输出undefined
argunments是函数调用的时候会自动生成一个对象,就打算传递的参数
二、重载
不管传递多少函数,都可以吧得到结果的时候,不显示函数,直接再函数写arguments
如果一个函数未定义return则输出的为enfidend,一般函数执行到return时候,就结束了,不在执行。
三、函数的声明前置
与变量前置,变量提升一样
四、函数表达式没有前置,如果发函数放前面,表达式放后面,则报错。
函数和函数表达式的区别是有无var
五、函数和变量同时出现,函数会覆盖变量的命名,不管
函数前置的,变量的前置,变量先前置,函数再签注,函数把变量覆盖
var放前面,接着是函数表达式,然后再执行,看看函数表达式最终结果
六、作用域
作用域必须在函数里面,js中大括号,小括号都不形成作用域,需要变量的时候就去声明
for是关键字,不是函数
作用域:输出结果先从自己的作用域中找,找的到就输出,找不到就再全局作用域找,for,都是全局变量,函数的bushi
不加var是全局变量,加上就不是
函数里面 有var就把var放前面,函数名和变量名重复,变量放最前面,函数覆盖变量,如果没有变量再往父级去找,去赋值或者去输出
七、表达式
立即执行函数:定义一个函数,加个()就会立即执行,不用再调用
(function nsay(){var i=888;console.log('hello',i)};)()直接输出'hello' 888
递归函数
八、作用域链
作用域链:再函数执行的过程中,函数函数里面的元素可以执行函数里面定义的局部变量,如果函数里面没有声明,可以直接用全局变量
window,a相当于当前浏览器全局环境变的变量,
在全局作用域下,a=1和var a=1 和window.a=1三者是一样的
、