The most interesting function
有意思的根源在于- 函数也是对象,同样有拥有属性和方法。 由于函数是是对象,那么函数名也就相当于指向函数对象的指针 通常函数是由"函数声明"创建:
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:> //这种方式,会导致两次解析代码,第一次解析常规的代码,第二次解析传入构造函数中的字符串。</span><br><span style="font-family: " microsoft yahei font-size:>1 <span style="color: #0000ff">var</span> sum = <span style="color: #0000ff">new</span> Function("sum1","sum2","return sum1+sum2")</span>
"函数声明"与"函数表达式"的区别在于:
Function expression has no function name
Function expressions need to end with a semicolon
Function with multiple function names
上面提到,函数是对象,而函数名仅仅是执行函数对象的指针。 这代表着,通过将函数名赋值给其他变量,其他变量则也可以通过自身调用该函数。 注意: 访问函数对象指针时,则需要带小括号,如上面函数访问 sum 函数的指针 则需要将 sum 赋值给一个变量,该变量便可拥有指向同等函数的指针。
eg: var sum1 = sum; // sum(); sum1(); 执行的结果相同
强调: 使用 "函数名+()",代表着调用该函数, 不添加 "()",则代表访问该"指向该函数对象的指针" 将函数名设置为 null ,则可以使其指向的函数断绝联系。
eg: sum = null; // sum(); 则会报错,提示sum不是一个函数, null代表着空对象指针
No function Overloading
相同的函数名,后者会替换前者(函数声明或者函数表达式都是如此,这里以函数声明为例子)
eg: function sum(sum1){ return sum1+ 100 } function sum(sum2){ return sum2+ 200 } sum(100); // 300;
The difference between function declaration and function expression
js解析器在对于这两者是由区别的。 函数声明的函数,在开始执行代码之前,就会通过函数声明提升的过程,读取并将函数声明添加到执行环境中。 即使函数在调用函数后面,也不会影响函数求值。 而函数表达式则不会,解析器必须执行到当前代码块才会被初始化并执行。如果调用在前,则
Function as value
在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'}]
Properties of function
每个函数都包含两个属性: 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>
Method of function
每个函数都包含两个非继承而来的方法: apply() 与 call(); 两者区别在于,第二个参数的不同。 该方法强大在于,可以扩充函数赖于运行的作用域。 apply(): 第一参数是在其中运行函数的作用域,另一个是参数数组。 call() : 第一参数是在其中运行函数的作用域,其他参数直接传递给函数, 也就是除第一个参数,其他都是逐个列举出来。 使用场景: 两者结果没有任何区别,而具体使用哪个,则取决于你传入的参数使用哪个方法方便。 如果传入参数是一个数组则使用 apply 更合适一点,否则 call() 更合适一点。
The above is the detailed content of What are the Function types in js. For more information, please follow other related articles on the PHP Chinese website!

如何使用JS和百度地图实现地图平移功能百度地图是一款广泛使用的地图服务平台,在Web开发中经常用于展示地理信息、定位等功能。本文将介绍如何使用JS和百度地图API实现地图平移功能,并提供具体的代码示例。一、准备工作使用百度地图API前,首先需要在百度地图开放平台(http://lbsyun.baidu.com/)上申请一个开发者账号,并创建一个应用。创建完成

js字符串转数组的方法:1、使用“split()”方法,可以根据指定的分隔符将字符串分割成数组元素;2、使用“Array.from()”方法,可以将可迭代对象或类数组对象转换成真正的数组;3、使用for循环遍历,将每个字符依次添加到数组中;4、使用“Array.split()”方法,通过调用“Array.prototype.forEach()”将一个字符串拆分成数组的快捷方式。

如何使用JS和百度地图实现地图热力图功能简介:随着互联网和移动设备的迅速发展,地图成为了一种普遍的应用场景。而热力图作为一种可视化的展示方式,能够帮助我们更直观地了解数据的分布情况。本文将介绍如何使用JS和百度地图API来实现地图热力图的功能,并提供具体的代码示例。准备工作:在开始之前,你需要准备以下事项:一个百度开发者账号,并创建一个应用,获取到相应的AP

如何使用JS和百度地图实现地图多边形绘制功能在现代网页开发中,地图应用已经成为常见的功能之一。而地图上绘制多边形,可以帮助我们将特定区域进行标记,方便用户进行查看和分析。本文将介绍如何使用JS和百度地图API实现地图多边形绘制功能,并提供具体的代码示例。首先,我们需要引入百度地图API。可以利用以下代码在HTML文件中导入百度地图API的JavaScript

js中new操作符做了:1、创建一个空对象,这个新对象将成为函数的实例;2、将新对象的原型链接到构造函数的原型对象,这样新对象就可以访问构造函数原型对象中定义的属性和方法;3、将构造函数的作用域赋给新对象,这样新对象就可以通过this关键字来引用构造函数中的属性和方法;4、执行构造函数中的代码,构造函数中的代码将用于初始化新对象的属性和方法;5、如果构造函数中没有返回等等。

这篇文章主要为大家详细介绍了js实现打字小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

php在特定情况下可以读js内部的数组。其方法是:1、在JavaScript中,创建一个包含需要传递给PHP的数组的变量;2、使用Ajax技术将该数组发送给PHP脚本。可以使用原生的JavaScript代码或者使用基于Ajax的JavaScript库如jQuery等;3、在PHP脚本中,接收传递过来的数组数据,并进行相应的处理即可。

js全称JavaScript,是一种具有函数优先的轻量级,直译式、解释型或即时编译型的高级编程语言,是一种属于网络的高级脚本语言;JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式,如函数式编程。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

WebStorm Mac version
Useful JavaScript development tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.
