zoukankan      html  css  js  c++  java
  • 函数定义,声明提前及相关题目

    函数使用function关键字来定义, 它可以用在函数定义表达式或者函数声明语句。 两种形式中, 函数定义都从function关键字开始, 其后跟随这些组成部分:

    • 函数名称标识符
    • 一对圆括号。 其中包含由0个或多个逗号隔开的标识符组成的列表。 这些标识符是函数的参数名称, 它们就像函数体中的局部变量一样。
    • 一对花括号。 其中包含0条或多条JavaScript语句。 这些语句构成函数体: 一旦调用函数,就会执行这些语句。
    函数定义表达式

    函数定义表达式也可以称作“函数直接量”。 对函数定义表达式来说, 函数名称是可选的, 这个名字如果存在, 该名字只存在于函数体中, 并指代该函数对象本身。例:

     var fn = function(x) {return x * x;};
     var f = function f(x) {return x * x;};
    函数声明语句

    函数名称是函数声明语句必须的部分, 一条函数声明语句实际上声明了一个变量, 变量指向函数对象。

     function fn(x) {return x * x;}

    声明提前

    函数声明语句会被提前到脚本或函数的顶部。 使用var的时候,只有变量声明提前, 变量的初始化代码仍然在原来的位置。 然而使用函数声明语句, 函数名称和函数体均提前。 也就是说, 可以在声明一个函数之前调用它。

    以表达式定义的函数就另当别论了, 要使用一个以表达式方式定义的函数, 必须把它赋值给一个变量, 然而就像上面说的, var 变量声明虽然可以提前, 但变量赋值是不会提前的, 所以, 以表达式方式定义的函数在定义之前无法调用。

    return语句

    多数函数包含一条return语句。 return语句导致函数停止执行, 并返回它的表达式(如果有的话)的值给调用者。如果return语句没有一个与之相关的表达式, 则返回undefined值。 如果一个函数不包含return语句, 那它执行函数体中每条语句, 并返回undefined给调用者。

    函数嵌套

    函数声明语句并非真正的语句,ECMAScript规范只允许它们作为顶级语句。 它们可以出现在全局代码, 或者嵌套在其他函数中, 但它们不能出现在循环、条件判断, 或者try/catch/finally以及width语句中。

    函数定义表达式可以出现在JavaScript代码的任何地方。

    相关题目

    题1:

     alert(a in window);
     var a = 10;

    题2:

     function f(){
         alert(1);
     }
     f();
     function f(){
         alert(10);
     }
     f();

    题3:

     alert(a);
     var a = 1;
     function a() {}
     alert(a);

    题4:

     var a = 1;
     var b = function a(){
         alert(a);
     };
     alert(a);
     b();
  • 相关阅读:
    Codeforces 722C. Destroying Array
    Codeforces 722D. Generating Sets
    【BZOJ】3436: 小K的农场
    数论四·扩展欧几里德
    数论三·约瑟夫问题
    数论二·Eular质数筛法
    #1287 : 数论一·Miller-Rabin质数测试
    树的维护
    可持久化线段树
    【NOIP2016】天天爱跑步
  • 原文地址:https://www.cnblogs.com/blackwood/p/3178050.html
Copyright © 2011-2022 走看看