Js中正常定义方法的形式是
function 方法名(参数1, 参数2, .., 参数n){
body // 代码体
return 返回值;
}
方法名()
这里关于这种正常的方法定义和使用,不在过多介绍,主要介绍一些JS方法的一些特性的内容。
方法定义可以在使用后面
在其他语言,例如C、C++、Python中,如果我们在定义方法前就使用这个方法,会产生BUG,但是在JS中却是可以做到的,例如下面这样一段代码:
var x = 10;
show();
function show(){
console.log("function:" + x);
return "sucsses";
}
原因
之所以出现这样的情况,是因为JS在运行过程中,会进行变量和函数的一个提升,会自动将函数的定义放在运行前面,所以像下面这段代码:
var x = 10;
show();
function show(){
console.log("function:" + x);
return "sucsses";
}
function message(){
console.log("hello");
return "hello";
}
message();
由于JS对变量(var定义的变量才能提升)的和函数的提升,实际上是这样的:
var x = 10;
function show(){
console.log("function:" + x);
return "sucsses";
}
function message(){
console.log("hello");
return "hello";
}
show();
message();
匿名函数
在js中我们可以直接将函数给到变量,而不是通过function 函数名()...这样的形式去定义函数,例如下面这样:
let show = function(num){
return num + 10
}
let message = (function(miss){console.log(miss)})
let x = show(15);
console.log(x)
message("hello")
自执行函数
自执行函数是指函数在被定义的过程中就自动运行了,而不是通过函数名去手动调用的,设计一个自执行函数也很简单,例如下面这样:
(function show(){console.log("hello")})()
箭头函数
函数也可以通过箭头进行定义,例如下面这样:
let xx = () => console.log("hello");
xx()
如果执行体需要多行,则加上{}即可,例如这样:
let xx = () => {
let x = 10;
console.log(x);
return x
}
xx()
箭头函数定义规则
let 函数名 = (参数1, 参数2, .., 参数n) => {函数体}
arguments
很多js中会遇到处理arguments的场景,所以我们需要先了解一下这个arguments的作用,它是JS函数中一个特殊的局部变量,也就是仅仅可以在函数内部使用这个内容,作用是加载所有的函数参数,形成一个数组。
function add(x, y){
console.log(x, y);
console.log(arguments);
}
add(10, 11)