最有意思的函数
有意思的根源在于- 函数也是对象,同样有拥有属性和方法。 由于函数是是对象,那么函数名也就相当于指向函数对象的指针 通常函数是由"函数声明"创建:
1 function(sum1,sum2){ 2 reutnr sum1 + sum2; 3 }
也可以使用"函数表达式"创建:
1 var sum = function(sum1,sum2){ 2 return sum1+sum2; 3 };
还有一种方式使用"构造函数"创建: (但不推荐)
<span style='font-family: "Microsoft YaHei"; font-size: 16px'> //这种方式,会导致两次解析代码,第一次解析常规的代码,第二次解析传入构造函数中的字符串。</span><br><span style='font-family: "Microsoft YaHei"; font-size: 16px'>1 <span style="color: #0000ff">var</span> sum = <span style="color: #0000ff">new</span> Function("sum1","sum2","return sum1+sum2")</span>
"函数声明"与"函数表达式"的区别在于:
函数表达式没有函数名
函数表达式需要分号结尾
拥有多个函数名的函数
上面提到,函数是对象,而函数名仅仅是执行函数对象的指针。 这代表着,通过将函数名赋值给其他变量,其他变量则也可以通过自身调用该函数。 注意: 访问函数对象指针时,则需要带小括号,如上面函数访问 sum 函数的指针 则需要将 sum 赋值给一个变量,该变量便可拥有指向同等函数的指针。
eg: var sum1 = sum; // sum(); sum1(); 执行的结果相同
强调: 使用 "函数名+()",代表着调用该函数, 不添加 "()",则代表访问该"指向该函数对象的指针" 将函数名设置为 null ,则可以使其指向的函数断绝联系。
eg: sum = null; // sum(); 则会报错,提示sum不是一个函数, null代表着空对象指针
函数没有重载
相同的函数名,后者会替换前者(函数声明或者函数表达式都是如此,这里以函数声明为例子)
eg: function sum(sum1){ return sum1+ 100 } function sum(sum2){ return sum2+ 200 } sum(100); // 300;
函数声明与函数表达式的区别
js解析器在对于这两者是由区别的。 函数声明的函数,在开始执行代码之前,就会通过函数声明提升的过程,读取并将函数声明添加到执行环境中。 即使函数在调用函数后面,也不会影响函数求值。 而函数表达式则不会,解析器必须执行到当前代码块才会被初始化并执行。如果调用在前,则
作为值的函数
在JS中,函数名本身就是变量。所以函数也可以作为值来使用。 也就是说,不仅仅可以作为一个函数的参数,也可以作为一个函数的返回值。 而sort() 方法只能根据 tostring() 的值来排序
eg: var data = [{name:'A',age:2},{name:'B',age:1}] // 创建指定属性的函数 function setAttr(name){ return function(o1,o2){ var v1 = o1[name]; var v2 = o2[name]; if(v1 < v2) { return -1; } else if(v1 > v2) { return 1; } else { return 0; } } } //使用sort()方法调用 data.sort(setAttr('age')); // [{name,:'B',age:'1'},{name:'A',age:'2'}] data.sort(setAttr('name')); // [{name:'A',age:'2'},{name,:'B',age:'1'}]
函数的属性
每个函数都包含两个属性: length, prototype; length : 表示函数接收的参数个数。
1 eg: funciont sum(test){} //sum.lenght == 1;
<span style="font-family: "Microsoft YaHei"; font-size: 16px"><span style="background-color: #ffffff"><strong> prototype: </strong></span>在JS中,该属性是保存所有实例方法的真正所在。 在创建自定义引用类型以及实现继承时,该属性是非常重要的。<strong><span style="background-color: #ffffff"> prototype: </span></strong>属性是不可枚举的,因此不能使用for in发现。<br/> 通过构造函数的 <strong><span style="background-color: #ffffff">prototype </span></strong>属性,创建的方法或者属性,都会被它的实例对象所继承,从而实现继承机制。<br/></span>
函数的方法
每个函数都包含两个非继承而来的方法: apply() 与 call(); 两者区别在于,第二个参数的不同。 该方法强大在于,可以扩充函数赖于运行的作用域。 apply(): 第一参数是在其中运行函数的作用域,另一个是参数数组。 call() : 第一参数是在其中运行函数的作用域,其他参数直接传递给函数, 也就是除第一个参数,其他都是逐个列举出来。 使用场景: 两者结果没有任何区别,而具体使用哪个,则取决于你传入的参数使用哪个方法方便。 如果传入参数是一个数组则使用 apply 更合适一点,否则 call() 更合适一点。
以上是js中Function 类型有哪些的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript是现代网站的核心,因为它增强了网页的交互性和动态性。1)它允许在不刷新页面的情况下改变内容,2)通过DOMAPI操作网页,3)支持复杂的交互效果如动画和拖放,4)优化性能和最佳实践提高用户体验。

C 和JavaScript通过WebAssembly实现互操作性。1)C 代码编译成WebAssembly模块,引入到JavaScript环境中,增强计算能力。2)在游戏开发中,C 处理物理引擎和图形渲染,JavaScript负责游戏逻辑和用户界面。

JavaScript在网站、移动应用、桌面应用和服务器端编程中均有广泛应用。1)在网站开发中,JavaScript与HTML、CSS一起操作DOM,实现动态效果,并支持如jQuery、React等框架。2)通过ReactNative和Ionic,JavaScript用于开发跨平台移动应用。3)Electron框架使JavaScript能构建桌面应用。4)Node.js让JavaScript在服务器端运行,支持高并发请求。

Python更适合数据科学和自动化,JavaScript更适合前端和全栈开发。1.Python在数据科学和机器学习中表现出色,使用NumPy、Pandas等库进行数据处理和建模。2.Python在自动化和脚本编写方面简洁高效。3.JavaScript在前端开发中不可或缺,用于构建动态网页和单页面应用。4.JavaScript通过Node.js在后端开发中发挥作用,支持全栈开发。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SublimeText3 Linux新版
SublimeText3 Linux最新版

WebStorm Mac版
好用的JavaScript开发工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),