JavaScript函数的声明

JavaScript函数的声明

函数概念:是由事件驱动的或者当他被调用时可执行的可重复使用的代码块。

函数常见的两种声明方式

  • 声明式:必须以function关键字开头,后跟一组参数以及函数体。
    基本语法如下所示:
function 函数名(参数1,参数2,...) {
	// 代码
}
// 函数的名字,自定义(遵循变量名的命名规则和命名规范)
// ()是用来放参数的位置,个数 >= 0
// {}是具体需要执行的代码
  • 赋值式(函数表达式):使用 var 定义一个变量,把一个函数当作值直接赋值给这个变量就可以了
    基本语法如下所示:
var 函数名 = function() {
	// 一段代码 
}
// 不需要在 function 后面书写函数的名字了

两种声明方式的区别

  • 赋值式声明的函数只能声明之后调用(作用域内),因为这种方式声明的函数,是在函数运行的阶段才赋值的。
  • 声明式声明的函数可以在声明函数的作用域内任一地方调用,因为这种方式,是在函数解析阶段赋值的
// 声明式
foo(); // 1
function foo() {
	console.log(1);
}
foo(); // 1
// 赋值式
foo(); // 报错(TypeError: foo is not a function)
var foo = function() {
	console.log(1);
};
foo(); // 1

注意点:

  • 当同时使用这两种方式声明同一个函数名,最终执行的是赋值式声明的函数。
// 赋值式
var foo = function() {
	console.log(1);  
}

// 声明式
function foo (){
	console.log(2);
}
foo(); // 1

由于js的预解析机制,即先解释代码,再执行代码

// js实际解读的样子
var foo;
function foo() {
	console.log(2);
}
foo = function (){
	console.log(1);
};
foo();
  • 当声明式函数和变量同名时,函数生效
console.log(foo);  // function foo(){}
var foo = 10;
function foo(){}

分析:

// js解析后
var foo;
function foo(){}
foo = 10;
console.log(foo);

声明提升的优先级:先提升变量的声明,然后再提升函数的声明。

发布了3 篇原创文章 · 获赞 0 · 访问量 40

猜你喜欢

转载自blog.csdn.net/zpy16104/article/details/104577836