js函数定义及一些说明

1.javascript定义函数的三种方法
一、function语句//这个方法比较常用
function
fn(){
  alert("这是使用function语句进行函数定义");
}
fn();

二、Function()构造函数
var F = new
Function("a","b","alert(a+b)");
F(a,b);

其实相当于如下代码:
function F(a,b){
  alert(a+b);
}

三、函数直接量//这个方法比较常用
var zhenn =
function(){
  alert("zhenn");
}
zhenn();
虽然函数直接量创建的是未命名函数,但是它的语法也规定它可以指定函数名,这在编写调用自身的递归函数时非常有用,例如:

var f = function fact(x) {
if (x <= 1) {
return 1;
} else {

return x * fact(x - 1);
}
};

注:它并没有真正创建一个名为fact()函数,只是允许函数体用这个名字来引用自身。JavaScript1.5之前的版本中没有正确实现这种命名的函数直接量。

2.其他说明
一、构造函数
其实从字面上理解,构造函数似乎也是函数,其实它并不是函数,而只是一种函数模型。
要实例化才能运行,就跟我们写的类一样,要new一下才能用。
function
Fn(){ //定义构造函数  
  this.elem ="字符串";  
  this.fn =
function(){    
    alert("函数");  
  }
}
var f = new Fn();
//实例化
alert(f.elem);
f.fn();

二.Function()构造函数和函数直接量差别
Function()构造函数和函数直接量之间的差别有一点就是:使用构造函数Function()创建的函数不使用词法作用域,相反的,它们总是被顶级函数来编译,如:
var y = "global";

function constructFunction() {
var y = "local";
//Function()构造函数

return new Function("return y;");//不使用局部作用域
}
function
constFunction() {
var y = "local";
//函数直接量
var f = function () {

return y;//使用局部作用域
};
return f;
}

alert(constructFunction()()); //显示 global,因为Function()构造函数返回的函数并不使用局部作用域

alert(constFunction()());//显示 lobal,因为函数直接量返回的函数并使用局部作用域

三.函数直接量详细说明
在一些框架代码中偶尔会看到这样的写法:(如jquery)
代码一:
var tempObject =
function doFunction() {
...
}();

代码二:
(function doFunction() {
...
})();

如果我把这个单独拿出来,你可能也一眼就看出来这段代码的巧妙之处了--它在构造函数直接量的同时直接运行了此函数,而第二种代码相对第一种而言更简洁了(PS:第二种代码用一对小括号避免了编译错误)。

时间: 2024-10-10 08:45:47

js函数定义及一些说明的相关文章

js函数定义 参数只要写名称就可以了

js函数定义  参数只要写名称就可以了 以下为标准: function add(type)  { } 不要写成下面这个样子 function add(var type)  { } 哎 妹的  老何java混淆

node.js 函数定义和调用

·函数定义: var a=2; function add(i){ if(i>0){ return 1; }else{ return 2; } } add(a); console.log(add(a)); function  //函数定义 add   //函数名称 (i)   //形参,多个形参可以用 , 隔开 {}   //函数体   可以包含若干语句   也可以没有语句 add(a)    //实参,是将 a 的值付给形参 i    (函数调用) 注:函数内部的语句 ,执行到return时,函

js 函数定义的两种方式以及事件绑定(扫盲)

一.事件(例如:onclick)绑定的函数定义放在jsp前面和放后面没影响 二. 1 $(function() { 2 function func(){}; 3 }) onclick通过如下方式绑定事件到jsp中:onclick = "func();" 由于func()在函数中声明,是局部变量,onclick找不到func(),绑定失败. 三. function func(){}; onclick = "func();" 这样绑定没有问题,因为func()此时是全局

js 函数定义三种方式

今天看到js原来有很多种定义的方式 var region = new Object();region.isAdmin = false;region.loadRegions = function(b, a, c) { Ajax.call(region.getFileName(), "type=" + a + "&target=" + c + "&parent=" + b, region.response, "GET&quo

js函数定义和调用

由于JavaScript的函数也是一个对象,上述定义的abs()函数实际上是一个函数对象,而函数名abs可以视为指向该函数的变量. var abs = function (x) { if (x >= 0) { return x; } else { return -x; } }; 这种方式下,function (x) { ... }是一个匿名函数,它没有函数名.但是,这个匿名函数赋值给了变量abs,所以,通过变量abs就可以调用该函数. abs()//返回NaN 此时abs(x)函数的参数x将收到

JS函数定义与匿名函数的调用

定义函数的三种方法: 1.关键字法 function fnMethodName(x) { alert(x); } 2.字面量法 var fnMethodName = function (x) { alert(x); } 3.Function()构造函数 var fnMethodName = new Function('x', 'alert(x);') 上面三种方法定义了同一个方法函数fnMethodName,第1种就是最常用的方法,后两种都是把一个函数复制给变量fnMethodName,而这个函

JS 函数中的arguments,call,apply

JS 函数定义的时候的参数和调用时的关系调用时实际传递的参数可以比定义的参数多或者少,见下面的两个例子 <script> function test(a,b,c){ console.log(a); } test('a'); test('a','b','c'); </script> <script> function test(a){ console.log(a); } test('a'); test('a','b','c'); </script> JS的方法

关于JS中的函数定义及函数表达式

在初学JS的过程中,老是不能区别什么是函数表达式什么是函数定义,这对基础知识的夯实是不利的.因此查阅资料,认真对其进行了区别. 简单总结如下: 1.区别一:以function开头的函数纪委函数定义,其他则为函数表达式: 2.区别二:函数表达式可以省略函数名. function FunctionName(FormalParameterList) { FunctionBody } //函数定义 function [FunctionName](FormalParameterList) { Functi

js函数的定义

js函数可以通过以下三种方法定义 1.使用关键字Function定义函数. 2.可以通过声明定义. 3.也可以是一个表达式. 1.关键字Function定义(构造函数) var myFunction = new Function('a', 'b', 'return a * b'); var x = myFunction(4, 3); 实际不必使用构造函数(在javascript中很多时候需要避免使用new关键字,以及这种方式会导致解析两次代码,影响性能.第一次解析常规的JavaScript代码,