JS-函数&变量定义

wujiawen 发布于

关于函数定义

  • 函数分为:定义式函数和赋值式函数

  • 对于定义式函数,js引擎在加载过程中,会进行预处理,赋值式函数则是调用时才进行处理

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
      // 定义式函数
    Fn1()
    function Fn1(){
    alert("Hello World!")
    }
    // 执行正常 因为已经进行了预处理

    // ********************************

    // 赋值式函数
    Fn2()
    var Fn2 = function(){
    alert("Hello wild!")
    }
    // 报错 Fn2 is not a function 浏览器未对Fn2进行预处理,依序执行,所以报错Fn2未定义
  • 注意
    重复定义函数会覆盖前面的定义

关于变量声明

  • 通过var关键字进行声明的变量会与作用域关联,而不通过var关键字声明,直接赋值,则只是给全局对象动态添加属性

  • 通过var关键字声明的变量不能通过 delete 删除,没有使用var的可以通过 delete 删除
    (var关键字声明的变量实际上是全局对象的不可配置属性)

  • 重复定义变量,会先查找定义域中是否已经定义该变量,若有,则进行值覆盖,若没有,则进行定义并赋值