image.png

    1.使用关键字:function 来声明函数,语法格式如下:
    function name(params) {
    **//函数体
    }
    注意:function声明函数的关键字 全部小写
    image.png
    image.png
    image.png
    image.png

    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png

    js 中 Object 和 Function 的关系是微妙的,他们互为对方的一个“实例”。
    Function instanceof ObjectObject instanceof Function 都是 true
    1。我们可以认为 Object 是一个特殊的“类”,而这里的“类”即:Function
    于是便可以理解为: Object = Function () {} 或 Object = new Function(); 即:ObjectFunction的一个实例,所以,Object 原型链中便包含 Function.prototype,得出: Function.prototype.isPrototypeOf(Object) 为 true
    2。同时,js中,所有对象(不包括js语言外部对象)都可视为是 Object 的一个实例, Function 不例外,Function.prototype 亦不例外,于是有 Function = new Object(); Function.prototype = new Object(), 于是 Object.prototype.isPrototypeOf(Function) 和 Object.prototype.isPrototypeOf(Function.prototype) 都为 true 了
    3。补充:Function 本身也是一个“类”,然而,所有“类”都是Funciton的实例,于是 Functioninstanceof Function; 为true。同时,所有对象都是 Object 类的实例,Object 本身也是一个对象,所有又有 Object instanceof Object 也为 true。另外,还可以认为 Funciton 类型是 Object 类型的一个“派生类”,class Function 继承了class Object ,是 class Object 的一个“子类”。
    转载于:https://www.cnblogs.com/kimzeng/archive/2009/09/25/1574113.html
    相关资源:理解Javascript Function与Object

    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    1.我们js引擎运行js 分为两步:先预解析 再代码执行
    (1).预解析 js引擎 会把js 里面所有的var 还有function提升到当前作用域的最前面
    (2).代码执行 按照代码书写的顺序 从上往下执行

    2.预解析分为 变量预解析(变量提升) 和函数预解析(函数提升)
    (1) 变量提升 就是把所有的变量声明提升到当前的作用域最前面 不进行赋值操作。
    (2) 函数提升 就是把所有的函数声明提升到当前作用域的最前面 不调用函数
    image.png

    内部局部变量 变量提升到局部作用域的最上面:

    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png