`
zhouyrt
  • 浏览: 1140989 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

具名函数的四种调用方式(1)

阅读更多

 

1、()小括号运算符   平时最常用的就是()运算符来调用/执行一个函数

 

//无参函数fun1
function fun1() {
	alert('我被调用了');
}
fun1()

//有参函数fun2
function fun2(param) {
	alert(param);
}
fun2('我被调用了')
 

ECMAScript3后加入给Function加入了call和apply后,就有了下面两种

 

2、call

 

//无参函数fun1
function fun1() {
	alert('我被调用了');
}
fun1.call(null);

//有参函数fun2
function fun2(param) {
	alert(param);
}
fun2.call(null,'我被调用了')

 

3、apply

 

//无参函数fun1
function fun1() {
	alert('我被调用了');
}
fun1.apply(null);

//有参函数fun2
function fun2(param) {
	alert(param);
}
fun2.apply(null,['我被调用了'])
 

4、new 不推荐使用这种方式哦

 

//无参函数fun1
function fun1() {
	alert('我被调用了');
}
new fun1();


//有参函数fun2
function fun2(param) {
	alert(param);
}
new fun2('我被调用了')
 

 

ok,从以上调用方式上看四种方式执行结果没有区别。但如果函数有返回值的话,用new方式调用时可能会让你有些失望。

 

//有返回值的函数fun
function fun() {
	alert('我被调用了');
	return "jack";
}

var c = new fun();
alert(c);//[object Object],为什么不是"jack"?

 

改成这样,

 

//有返回值的函数fun
function fun() {
	alert('我被调用了');
	return {name:'jack'};
}

var c = new fun();
alert(c.name);//jack,又正常返回了
 

好了,总结下:用new方式调用函数时。如果存在返回值,当返回值是javascript的内置类型(基本类型)如字符串(String),数字(Number),布尔(Boolean)等时,将不会返回该值;当返回值是对象,函数,数组等对象类型时,将返回该对象,函数,数组。

 

当返回值是内置类型(基本类型)时,new fun()到底返回什么呢?下一篇将讨论new方式调用的细节。

 

 

1
1
分享到:
评论

相关推荐

    JavaScript中具名函数的多种调用方式总结

    JavaScript中的具名函数有多种调用方式,本文将总结其中的四种方法,主要包括普通函数调用、使用call方法、使用apply方法以及使用new关键字调用。 首先,最常见也是最直接的函数调用方式是使用圆括号()。这通常是在...

    javascript 具名函数的四种调用方式 推荐第1/3页

    总结来说,这四种函数调用方式在很多情况下执行结果看起来没有区别,但是在函数返回值存在时,它们的行为表现会有所不同。特别是new关键字调用,它涉及到构造函数的创建和this的绑定,对于返回值的处理也会因返回值...

    js函数调用的方式

    (3)没有引用的匿名函数调用1 代码如下:(function() {}()); (4)没有引用的匿名函数调用2 代码如下: (function() { })();   (5)没有引用的匿名函数调用3 代码如下: void function() { }(); 图1.1,图1.2表明...

    手动回调函数

    回调函数在计算机编程中是一种设计模式,它允许你将一个函数作为参数传递给另一个函数,以便在特定条件或事件发生时被调用。在VB(Visual Basic)中,虽然不直接支持函数指针,但可以通过一些技巧实现类似的功能。本...

    一本关于JavaScript中函数式编程的书

    在JavaScript中,`map()`、`filter()`和`reduce()`等函数就是常见的高阶函数示例,它们可以用于操作数组,提供了一种抽象和复用代码的方式。 四、函数组合 函数组合是将两个或更多函数串联起来,形成一个新的函数。...

    4. 函数1

    - `defer`后的函数调用会在函数返回之前执行,这有助于保持代码整洁,特别是在需要成对操作(如打开/关闭,连接/断开)的情况下。`defer`的调用顺序遵循“后进先出”(LIFO),类似于栈的性质。 9. **利用闭包改变...

    Android-KatzKotlin的函数数据类型和抽象

    函数还可以接受具名参数,这在处理复杂函数时特别有用,因为它允许调用者明确指定参数的值。例如,`fun greet(name: String, age: Int) { println("Hello, $name! You are $age years old.") }`,调用时可以写成`...

    Labview 调用Bartender打印标签,bartender标签打印教程,LabView

    首先,VI会打开Bartender模板,然后通过API函数找到并连接到模板中的具名数据源。接着,通过写入操作,将LabVIEW中的变量或数组数据写入到对应的具名数据源中,从而更新标签内容。 5. **打印设置和多具名数据源**:...

    javascript函数自制手册

    函数表达式是另一种定义函数的方式,它包括匿名函数(没有函数名)和具名函数表达式。例如: ```javascript var anonymous = function() { console.log('I am anonymous'); }(); function named() { console.log...

    JavaScript的函数声明与应用

    此外,JavaScript的箭头函数(Arrow Function)提供了一种更简洁的函数定义方式,特别是在处理回调函数时。例如: ```javascript var sayHello = () => console.log('Hello, world!'); ``` 箭头函数有两点需要注意...

    js匿名函数作为函数参数详解

    在JavaScript(简称js)编程中,函数是一等公民,这意味着函数可以像其他值一样被赋给变量、作为参数...在这种情况下,建议根据情况将匿名函数定义为具名函数,并抽取到独立的作用域中,以提高代码的可读性和可维护性。

    PYTHON学习教程资源:匿名函数.docx

    匿名函数是 Python 中的一种特殊函数,顾名思义,它不需要具名定义,可以直接使用 lambda 关键字来定义。匿名函数的特点是可以直接传入函数中,而不需要事先定义函数名。这使得代码看起来更加简洁和灵活。 匿名函数...

    JS定义函数的几种常用方法小结

    具名函数表达式是在赋值时指定函数名,而匿名函数表达式则没有名称。函数表达式赋值给变量后,变量名实际上指向了函数对象。示例如下: ```javascript // 具名函数表达式 var greet = function greeting(greeting, ...

    javascript 用函数语句和表达式定义函数的区别详解

    - **具名函数表达式**:虽然函数表达式通常匿名,但也可以为函数提供一个内部名称,如`function innerName() {...}`。这种情况下,`innerName`只在函数体内部可见,不能在外部访问。 总结来说,函数语句和函数...

    C++计算器实现.zip

    _1则调用次近的一个不具名表达式。 以此类推。 3、计算命令 以$()为准,括号内的即为需要计算的式子。 4、结束命令 无论是只定义了表达式,或是直接调用$()进行计算,都以感叹号+回车作为结束符。

    C++调用Bartender模板进行打印标签

    1. **初始化Bartender对象**:在C++中,你需要创建一个 Bartender 对象实例,通常通过CoCreateInstance函数实现。例如: ```cpp CoInitialize(NULL); IDispatch* pBarTender = NULL; HRESULT hr = ...

    JavaScript中的函数声明和函数表达式区别浅析

    具名函数表达式除了定义一个函数之外,还可以在函数内部通过函数名调用自身,这在递归调用时特别有用。 当函数表达式出现在赋值表达式的一部分时,如 `var foo = function() {}`,或被包含在分组操作符中(即被一对...

Global site tag (gtag.js) - Google Analytics