JavaScript学习笔记(十) 函数声明VS函数表达式
2012-09-26 21:57
726 查看
我们应该在什么时候使用函数声明或函数表达式呢?
当你在语法上不能使用函数声明的时候,你就可以使用函数表达式;
比如:传递一个函数作为参数或者在对象字面量中定义一个函数:
它们的定义不能不能赋值给一个变量或属性,或者作为一个参数传递出现在函数调用中;
下面的例子是函数声明的允许的用法,foo(),bar()和local()都是通过函数声明模式声明:
像下面这段代码就会报错:
说明命名函数表达式的名字(f1,可选的)是被忽略的,不能通过函数表达式的名字名字(f1)调用函数,只有变量名是有效的,但是函数表达式的名字名字会作为函数的name属性;
但在函数内部是可以通过函数表达式的名字(f1)调用的。
当你在语法上不能使用函数声明的时候,你就可以使用函数表达式;
比如:传递一个函数作为参数或者在对象字面量中定义一个函数:
// this is a function expression, // pased as an argument to the function `callMe` callMe(function () { // I am an unnamed function expression // also known as an anonymous function }); // this is a named function expression callMe(function me() { // I am a named function expression // and my name is "me" }); // another function expression var myobject = { say: function () { // I am a function expression } };函数声明只能出现在“程序代码”中,意味着只能在其它函数体中或者全局空间;
它们的定义不能不能赋值给一个变量或属性,或者作为一个参数传递出现在函数调用中;
下面的例子是函数声明的允许的用法,foo(),bar()和local()都是通过函数声明模式声明:
// global scope function foo() {} function local() { // local scope function bar() {} return bar; }
像下面这段代码就会报错:
function DeclarationsVSExpression() { //f1(); //f1 is undefined var i=0; var f2 = function f1() { console.info("XXXX"); while(i<10){ i++; f1(); } }; console.info(f2.name); //output f1 f2(); //f1();//f1 is undefined }
说明命名函数表达式的名字(f1,可选的)是被忽略的,不能通过函数表达式的名字名字(f1)调用函数,只有变量名是有效的,但是函数表达式的名字名字会作为函数的name属性;
但在函数内部是可以通过函数表达式的名字(f1)调用的。
相关文章推荐
- Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
- javascript 函数声明和函数表达式的区别(学习笔记)
- Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
- <深入理解JavaScript>学习笔记(4)_立即调用的函数表达式
- 栋栋晓12:Javascript学习总结:函数声明和函数表达式的区别,apply和call的区别,
- JavaScript学习笔记(八)--- 函数表达式
- 【JavaScript 学习--12】--js 中两种函数定义的区别:函数声明和函数表达式
- JavaScript学习笔记:判断变量是否为undefined,判断变量和函数是否声明
- JavaScript高程学习笔记之函数表达式(7)
- JavaScript学习笔记之函数表达式与闭包
- JavaScript笔记整理 —— 函数声明与表达式
- Javascript学习笔记3 函数表达式 闭包
- JavaScript高程学习笔记之函数表达式(7)
- JavaScript高级程序设计学习笔记--函数表达式
- Javascript学习日志 (五)函数表达式
- Javascript学习笔记之函数篇(六) : 作用域与命名空间
- JavaScript学习笔记(2) -基本封装类型和正则表达式
- c++学习笔记之基础---类内声明函数后在类外定义的一种方法
- javascript学习笔记 (一)-函数基础
- JavaScript高级程序设计(第3版)学习笔记12 js正则表达式