js你不是的那些基础问题-函数
Posted wernerwu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js你不是的那些基础问题-函数相关的知识,希望对你有一定的参考价值。
1 概述
1.1 函数的声明
javascript 有三种声明函数的方法。
(1)function 命令
function
命令声明的代码区块,就是一个函数。function
命令后面是函数名,
函数名后面是一对圆括号,里面是传入函数的参数。函数体放在大括号里面。
function print(s) console.log(s);
上面的代码命名了一个print
函数,以后使用print()
这种形式,
就可以调用相应的代码。这叫做函数的声明(Function Declaration)。
(2)函数表达式
除了用function
命令声明函数,还可以采用变量赋值的写法。
var print = function(s) console.log(s); ;
这种写法将一个匿名函数赋值给变量。这时,这个匿名函数又称函数表达式(Function Expression),
因为赋值语句的等号右侧只能放表达式。
采用函数表达式声明函数时,function
命令后面不带有函数名。
如果加上函数名,该函数名只在函数体内部有效,在函数体外部无效。
var print = function x() console.log(typeof x); ; x // ReferenceError: x is not defined print() // function
上面代码在函数表达式中,加入了函数名x
。这个x
只在函数体内部可用,指代函数表达式本身,
其他地方都不可用。这种写法的用处有两个,一是可以在函数体内部调用自身,
二是方便除错(除错工具显示函数调用栈时,将显示函数名,而不再显示这里是一个匿名函数)。
因此,下面的形式声明函数也非常常见。
var f = function f() ;
需要注意的是,函数的表达式需要在语句的结尾加上分号,表示语句结束。
而函数的声明在结尾的大括号后面不用加分号。
总的来说,这两种声明函数的方式,差别很细微,可以近似认为是等价的。
(3)Function 构造函数
第三种声明函数的方式是Function
构造函数。
var add = new Function( ‘x‘, ‘y‘, ‘return x + y‘ ); // 等同于 function add(x, y) return x + y;
上面代码中,Function
构造函数接受三个参数,除了最后一个参数是add
函数的“函数体”,
其他参数都是add
函数的参数。
你可以传递任意数量的参数给Function
构造函数,只有最后一个参数会被当做函数体,
如果只有一个参数,该参数就是函数体。
var foo = new Function( ‘return "hello world";‘ ); // 等同于 function foo() return ‘hello world‘;
文章内容转自阮一峰老师 JavaScript教程 https://wangdoc.com/javascript/index.html
以上是关于js你不是的那些基础问题-函数的主要内容,如果未能解决你的问题,请参考以下文章