• 函数声明与函数表达式的提升剖析


    函数声明 

    function fn(){console.log('fn')}

    函数表达式

    var fn1 = function(){console.log('fn1')}​;

    在页面加载过程中,解析器在向执行环境加载数据时,对函数声明和函数表达式并非一视同仁.解析器会先读取函数声明,并保证在页面执行其他代码之前该函数是可执行的。

    至于函数表达式,则必须等到解析器执行到它所在行,才会被真正解释执行。也就是说,先对变量 var fn1;进行变量提升,等解析器执行到 fn1 = function(){}所在行时才能解释执行。

    例如

    1 alert(sum(1,2));
    2 
    3 function sum(num1,num2){
    4 
    5 return nu1 + num2;
    6 
    7 }​

    以上代码执行完全没有问题。

    1 alert(sum(1,2));
    2 
    3 var sum = function(num1,num2){
    4 
    5 return num1 + num2;
    6 
    7 }​;

    以上代码​会在运行期间产生错误,原因是在函数执行到alert的时候,变量sum中并没有保存对函数的引用。而且,由于第一行代码就会导致 unexpected identifier (意外标识符错误),实际也不会执行到下一行。

    除了什么时候可以通过变量访问函数这一个区别之外,函数声明和函数表达式语法其实是等价的。

    也可以同时使用函数声明和函数表达式。

    var sum = function sum(num1,num2){};​

    不过这种语法,在Safari中会导致错误。​

  • 相关阅读:
    Python为什么要self
    安全散列算法(secure hash algorithm,SHA)
    傅里叶变换

    K 最近邻(k-nearest neighbours,KNN)算法
    贪婪算法
    狄克斯特拉算法
    广度优先搜索
    快速排序
    选择排序
  • 原文地址:https://www.cnblogs.com/webhb/p/5614065.html
Copyright © 2020-2023  润新知