美文网首页
Javascript:函数

Javascript:函数

作者: INTERNALENVY | 来源:发表于2016-06-23 05:20 被阅读25次

函数声明和函数表达式有什么区别 


function foo(){}     函数声明

var f = function foo(){};  函数表达式

new function foo(){};      函数表达式,因为它是NewExpression表达式

(function (){

function foo(){};              函数声明,是函数体的一部分

}) ();

(function foo(){});          函数表达式,因为它被包含在分组操作符中,分组操作符只能包含表达式

简单来说,如果function foo(){}作为赋值表达式的一部分,则其为函数表达式,如果function foo(){}被包含在函数体内,或者处于程序的最上层,则认为它是函数声明。

两者的异同:

函数声明会在任何表达式被解析和求值之前先被解析求值;而表达式是遇到再算。

参考文献

什么是变量的声明前置?什么是函数的声明前置


变量的声明前置就是无论变量的声明在程序什么位置出现,都将它置于初始的位置。

函数声明前置是指将函数的声明置于初始位置,但是在变量声明之后。

上述代码执行后会出现function和1,因为实际相当于

arguments 是什么


arguments是函数的参数集合,用于获取参数数组,也可用于函数重载。

函数的重载怎样实现


function sum(a,b,c){

    var  sum =0;

   for (var i =0; i<arguments.length; i++){

sum += arguments[i];

    }

return sum;

}

上述函数是一个重载的求和函数。

立即执行函数表达式是什么?有什么作用


(function sum(){})();

(function(){})();      匿名函数

可以让函数在定义后直接调用,作用是在固有的作用域内使用,不会污染全局变量

什么是函数的作用域链


全局作用域,就是在函数外声明或者在函数内部未加var的变量都存在与全局作用域。

局部作用域,就是在函数内部可以访问到的作用域。

作用域链就是函数在使用过程中,会查找相应的变量或函数声明,首先是在当前作用域查找,之后开始逐级向上查找,这就形成了作用域链。

代码


1.

2.

3.因为变量声明前置,所以a是未定义,而b没有声明,所以报错

4.实际的执行顺序如下,所以输出helloworld和sayAge未声明

5.

实际执行路线

6.因为实际的执行顺序是

7.因为fn是1不是函数所以报错

8.因为声明前置,所以前两项未初始化,后两项循环后得10,100,这里有个问题,i,j的变量声明不是在for循环里面的吗,应该是局部变量才对呀,所以如果是局部变量的话,是不是前两个应该报错才对?是因为语句写的变量(不在函数内)所以都是全局变量吗?

9.实际顺序如下

10.函数输出10-2,运行后销毁,之后输出0

版权归ENVY和饥人谷所有,转载请注明出处

相关文章

  • Javascript 函数缺省值

    Javascript 函数 Javascript 函数缺省值写法

  • JavaScript函数式编程

    读完《JavaScript函数式编程》《JavaScript函数式编程指南》这两本书,对JavaScript函数式...

  • JavaScript函数式编程

    读完《JavaScript函数式编程》《JavaScript函数式编程指南》这两本书,对JavaScript函数式...

  • JavaScript函数

    layout: posttitle: JavaScript函数tags: [JavaScript, 函数]auth...

  • JavaScript encodeURI() 函数

    JavaScript encodeURI() 函数 JavaScript 全局函数](https://www.ru...

  • JavaScript中的函数

    @(javascript)[js函数] [toc] JavaScript中的函数 函数的分类与定义函数的方式 Ja...

  • JavaScript语言基础(二)

    JavaScript内置函数,这些函数都是由JavaScript语言自身提供,是JavaScript全局方法。pa...

  • JavaScript - 函数 - 1

    #JavaScript 函数定义 JavaScript 使用关键字 function 定义函数。函数可以通过声明定...

  • 2016-11-24

    JavaScript escape() 函数 JavaScript 全局对象 定义和用法:escape() 函数可...

  • JS 函数

    JavaScript 函数定义 JavaScript 使用关键字 function 定义函数。函数可以通过声明定义...

网友评论

      本文标题:Javascript:函数

      本文链接:https://www.haomeiwen.com/subject/wqmndttx.html