函数的创建与区别和 prototype
函数 区别 创建 prototype
2023-09-11 14:17:23 时间
https://www.cnblogs.com/haoxl/p/5267724.html(copy)
https://www.cnblogs.com/loveyoume/p/6112044.html(prototype)
1.函数声明
function sum1(n1,n2){ return n1+n2; };
2.函数表达式,又叫函数字面量
var sum2=function(n1,n2){ return n1+n2; };
两者的区别:解析器会先读取函数声明,并使其在执行任何代码之前可以访问;而函数表达式则必须等到解析器执行到它所在的代码行才会真正被解释执行。
自执行函数严格来说也叫函数表达式,它主要用于创建一个新的作用域,在此作用域内声明的变量,不会和其它作用域内的变量冲突或混淆,大多是以匿名函数方式存在,且立即自动执行。
(function(n1,n2){ console.log (n1+n2) })(1,3);//4
另外几种自执行函数:
//可用来传参 (function(x,y){ console.log(x+y); })(2,3); //带返回值 var sum=(function(x,y){ return x+y; })(2,3); console.log(sum); ~function(){ var name='~' console.log(name); }(); !function(){ var name='!' console.log(name); }(); ;(function(){ var name=';' console.log(name); })(); -function(){ var name='-' console.log(name); }(); //逗号运算符 1,function(){ var name=','; console.log(name); }(); //异或 1^function(){ var name='^'; console.log(name); }(); //比较运算符 1>function(){ var name='>'; console.log(name); }(); ~+-!(function(){ var name='~+-!'; console.log(name); })(); ~!(function(){ var name='~!'; console.log(name); })(); (function(){ var name='call'; console.log(name); }).call(); (function(){ var name='apply'; console.log(name); }).apply();
3.函数构造法,参数必须加引号
var sum3=new Function('n1','n2','return n1+n2'); console.log(sum3(2,3));//5
从技术角度讲,这是一个函数表达式。一般不推荐用这种方法定义函数,因为这种语法会导致解析两次代码(第一次是解析常规ECMAScript代码,第二次是解析传入构造函数中的字符串),从而影响性能。
var name='haoxl'; function fun(){ var name='lili'; return new Function('return name');//不能获取局部变量 } console.log(fun()());//haoxl
Function()构造函数每次执行时都会解析函数主体,并创建一个新的函数对象,所以当在一个循环或频繁执行的函数中调用Function()构造函数效率是非常低的。而函数字面量却不是每次遇到都会重新编译的,用Function()构造函数创建一个函数时并不遵循典型的作用域,它一直把它当作是顶级函数来执行。
相关文章
- mysql中,now()函数和sysdate()函数有什么区别?
- SQL UCASE() 函数
- C++虚函数与纯虚函数用法与区别
- C++对象模型——函数的效能(第四章)
- matlab基本函数randperm end数组索引
- 【转】snprintf()函数使用方法
- 详解Python-Numpy库的函数diagonal()【并附函数diagonal()与函数diag()的区别】
- 32 C++ - 运算符重载碰上友元函数
- [转]Oracle中存储过程和函数的区别
- 时间窗口函数
- 考研数二第一讲 函数与初等函数
- Go初始化函数make和new有什么区别?
- c语言之 malloc函数详解 在堆中动态分配内存malloc和new的区别
- Python input函数
- liunx printk 函数消息是如何记录的
- Oracle数据库之日期函数
- 【转载】 TensorFlow函数:tf.Session()和tf.Session().as_default()的区别
- Python中函数、方法的区别
- python第二十一课——str中的常用函数(重要)
- C++ main函数的参数