参考:js教程 函数定义和调用
定义函数
在JavaScript中,定义函数的方式如下:
function abs(x) {
if (x >= 0) {
return x;
} else {
return -x;
}
}
第二种定义函数的方式如下:
var abs = function (x) {
if (x >= 0) {
return x;
} else {
return -x;
}
};
调用函数
要避免收到undefined
,可以对参数进行检查:
function abs(x) {
if (typeof x !== 'number') {
throw 'Not a number';
}
if (x >= 0) {
return x;
} else {
return -x;
}
}
arguments
利用arguments
,你可以获得调用者传入的所有参数。也就是说,即使函数不定义任何参数,还是可以拿到参数的值:
function abs() {
if (arguments.length === 0) {
return 0;
}
var x = arguments[0];
return x >= 0 ? x : -x;
}
abs(); // 0
abs(10); // 10
abs(-9); // 9
实际上arguments
最常用于判断传入参数的个数。你可能会看到这样的写法:
// foo(a[, b], c)
// 接收2~3个参数,b是可选参数,如果只传2个参数,b默认为null:
function foo(a, b, c) {
if (arguments.length === 2) {
// 实际拿到的参数是a和b,c为undefined
c = b; // 把b赋给c
b = null; // b变为默认值
}
// ...
}
要把中间的参数b
变为“可选”参数,就只能通过arguments
判断,然后重新调整参数并赋值。
rest参数
function foo(a, b, ...rest) {
console.log('a = ' + a);
console.log('b = ' + b);
console.log(rest);
}
foo(1, 2, 3, 4, 5);
// 结果:
// a = 1
// b = 2
// Array [ 3, 4, 5 ]
foo(1);
// 结果:
// a = 1
// b = undefined
// Array []
rest参数只能写在最后,前面用...
标识,从运行结果可知,传入的参数先绑定a
、b
,多余的参数以数组形式交给变量rest
,所以,不再需要arguments
我们就获取了全部参数。
如果传入的参数连正常定义的参数都没填满,也不要紧,rest参数会接收一个空数组(注意不是undefined
)。
小心你的return语句
前面我们讲到了JavaScript引擎有一个在行末自动添加分号的机制,这可能让你栽到return语句的一个大坑:
function foo() {
return { name: 'foo' };
}
foo(); // { name: 'foo' }
如果把return语句拆成两行:
function foo() {
return
{ name: 'foo' };
}
foo(); // undefined
要小心了,由于JavaScript引擎在行末自动添加分号的机制,上面的代码实际上变成了:
function foo() {
return; // 自动添加了分号,相当于return undefined;
{ name: 'foo' }; // 这行语句已经没法执行到了
}
所以正确的多行写法是:
function foo() {
return { // 这里不会自动加分号,因为{表示语句尚未结束
name: 'foo'
};
}
相关推荐
- 这里的回调函数用于处理JavaScript函数的异步返回结果,如果需要同步获取结果,可以使用`QWebEngineScript`来注册一个全局JavaScript对象,然后通过该对象调用JavaScript函数。 2. **JavaScript调用QT函数**: ...
在 JS 中,有四种主要的函数调用模式,分别是:普通函数调用、方法调用、构造函数调用和apply/call调用。下面我们将详细探讨这些调用模式。 1. **普通函数调用**: 这是最常见的情况,函数作为一个独立的实体被执行...
这里定义了一个名为`myFunction`的JavaScript函数,接受两个参数`param1`和`param2`。 2. **调用JavaScript函数**: 要在JSP中调用这个JavaScript函数,可以使用HTML的事件监听器或者`<jsp:expression>`标签。...
本文将详细探讨C#与JavaScript之间的相互调用方法,主要涉及四个方面的内容:如何在JavaScript中访问C#函数、如何在JavaScript中访问C#变量、如何在C#中访问JavaScript已有的变量以及如何在C#中访问JavaScript函数。...
例如,如果你想从VBScript调用一个名为`myFunc`的JavaScript函数,你可以这样做: ```vbscript Dim myObj Set myObj = Server.CreateObject("Scripting.Dictionary") myObj.Language = "JScript" myObj.Add "myFunc...
JS 调用 DLL 实例详解 在 Unity3D 游戏引擎中,JS ...本文详细介绍了 JS 调用 DLL 实例的实现过程,包括导入外部 DLL、定义外部函数、调用外部函数等步骤。只要按照本文的步骤,开发者可以轻松地调用外部的 DLL 文件。
这篇博客通过深入分析JavaScript中的函数调用模式,帮助开发者更好地理解和掌握这些概念。 首先,JavaScript是一种动态类型语言,其中函数不仅是一种数据类型,还能够作为值进行传递和存储。这种特性被称为“函数是...
标题“javascript调用delphi中的函数”涉及到的技术领域是跨语言通信,具体是JavaScript与Delphi之间的交互。这种交互通常发生在Web应用程序与桌面应用程序的集成,或者在浏览器扩展和本地资源之间。以下是对这一...
使用window对象的方法有一个前提条件,即要确保函数是作为全局函数定义的。示例代码如下: ```javascript window.targetFunction = function() { alert(11111); return 9; }; test("targetFunction"); function ...
函数定义 函数语句定义 function(a,b){ return a+b; } 表达式定义 var add = function(a,b){return a+b}; //函数表达式可以包含名称,这在递归时很有用 var f = function fact(x){ if(x<=1) {return 1; }else ...
这种方法可以在函数定义之前或之后调用函数。 函数赋值式(function expression)是一种使用 var 关键字定义函数的方法,语法为:`var fun_name = function() { }`,把一个函数当作值直接赋值给这个变量。这种方法...
在本节“3.6 函数文件的定义与调用”中,我们将深入探讨函数在软件开发中的重要性和如何有效地创建及使用它们。这份资料以PPT的形式提供,通常包括一系列幻灯片,详细解释了函数的概念、类型、定义方法以及调用过程...
在JavaScript (JS) 和浏览器插件的交互中,NPAPI(Netscape Plugin Application Programming Interface)是一种早期且广泛使用的插件技术,它允许浏览器加载和运行外部代码来扩展其功能。NPAPI插件通常用于播放视频...
而b()中又要调用a.js文件中的方法a()。若要实现这个功能,必须注意,将要引入的Js文件代码放在</body>下面。 首先,我们在html中引入b.js,并在</body>之后加入引用语句。如下: <html>
当函数定义完成后,要想在程序中发挥函数的作用,必须得调用这个函数。 函数的调用非常简单,只需引用函数名,并传入相应的参数即可。 函数声明与调用的编写顺序不分前后。 5.2.2 函数的调用方式 2、函数的调用方式 ...
2. **实现接口**:为这个接口创建一个实现类,具体实现调用JavaScript函数的逻辑。这通常涉及到通过宿主环境提供的API来执行JavaScript代码。 3. **注册COM组件**:为了让JavaScript能够找到并调用COM组件,需要在...
本文将详细介绍如何实现前端JavaScript(JS)与后端C#之间的相互调用,这对于构建功能丰富的Web应用至关重要。下面将按照问题的四个要点逐一展开。 #### 1. JavaScript调用C#方法 JavaScript可以通过以下步骤来...
查看这两个文件的具体内容将有助于更深入地理解问题所在,包括函数定义、如何调用以及可能遇到的错误或需求。 在这个场景中,我们需要检查`client_str.html`中是否有正确引用`call_js`文件的`<script>`标签,以及...