最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

javascript基础教程之表达式和构造函数详解

来源:动视网 责编:小采 时间:2020-11-27 20:15:14
文档

javascript基础教程之表达式和构造函数详解

javascript基础教程之表达式和构造函数详解:函数定义表达式 以表达式方式定义的函数,函数的名称是可选的var functionName = function([arg1 [,arg2 [...argn]]]){ statement; } var functionName = function funcName([arg1 [,arg2 [...argn]]]){ sta
推荐度:
导读javascript基础教程之表达式和构造函数详解:函数定义表达式 以表达式方式定义的函数,函数的名称是可选的var functionName = function([arg1 [,arg2 [...argn]]]){ statement; } var functionName = function funcName([arg1 [,arg2 [...argn]]]){ sta


函数定义表达式

  以表达式方式定义的函数,函数的名称是可选的

var functionName = function([arg1 [,arg2 [...,argn]]]){
 statement;
}
var functionName = function funcName([arg1 [,arg2 [...,argn]]]){
 statement;
}

 匿名函数(anonymous function)也叫拉姆达函数,是function关键字后面没有标识符的函数

  通常而言,以表达式方式定义函数时都不需要名称,这会让定义它们的代码更加紧凑。函数定义表达式特别适合用来定义那些只会使用一次的函数

var tensquared = (function(x) {return x*x;}(10));

  而一个函数定义表达式包含名称,函数的局部作用域将会包含一个绑定到函数对象的名称。实际上,函数的名称将成为函数内部的一个局部变量

var test = function fn(){
 return fn;
}
console.log(test);//fn(){return fn;}
console.log(test());//fn(){return fn;}
console.log(test()());//fn(){return fn;}

 对于具名的函数表达式来说,函数名称相当于函数对象的形参,只能在函数内部使用;而变量名称相当于函数对象的实参,在函数内部和函数外部都可以使用

var test = function fn(){ 
 return fn === test;
}
console.log(test());//true
console.log(test === fn);//ReferenceError: fn is not defined

  函数定义了一个非标准的name属性,通过这个属性可以访问到给定函数指定的名字,这个属性的值永远等于跟在function关键字后面的标识符,匿名函数的name属性为空

//IE11-浏览器无效,均
输出undefined //chrome在处理匿名函数的name属性时有问题,会显示函数表达式的名字 function fn(){}; console.log(fn.name);//'fn' var fn = function(){}; console.log(fn.name);//'',在chrome浏览器中会显示'fn' var fn = function abc(){}; console.log(fn.name);//'abc'

Function构造函数

  Function构造函数接收任意数量的参数,但最后一个参数始终都被看成是函数体,而前面的参数则枚举出了新函数的参数

var functionName = new Function(['arg1' [,'arg2' [...,'argn']]],'statement;');

  [注意]Function构造函数无法指定函数名称,它创建的是一个匿名函数

  从技术上讲,这是一个函数表达式。但,不推荐使用,因为这种语法会导致解析两次代码。第一次是解析常规javascript代码,第二次解析传入构造函数中的字符串,影响性能

var sum = new Function('num1','num2','return num1 + num2');
//等价于
var sum = function(num1,num2){ 
 return num1+num2;
}

  Function()构造函数创建的函数,其函数体的编译总是会在全局作用域中执行。于是,Function()构造函数类似于在全局作用域中执行的eval()

var test = 0;
function fn(){
 var test = 1;
 return new Function('return test');
}
console.log(fn()());//0

  [注意]并不是所有的函数都可以成为构造函数

var o = new Math.min();//Uncaught TypeError: Math.min is not a constructor

文档

javascript基础教程之表达式和构造函数详解

javascript基础教程之表达式和构造函数详解:函数定义表达式 以表达式方式定义的函数,函数的名称是可选的var functionName = function([arg1 [,arg2 [...argn]]]){ statement; } var functionName = function funcName([arg1 [,arg2 [...argn]]]){ sta
推荐度:
标签: js 详解 解析
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top