一、函数的返回值
可以使用return 来设置函数的返回值
返回值可以是任意的数据类型,也可以是一个对象,也可以是一个函数
函数返回值语法:
return 值;
注意:
return后的值将会作为函数的执行结果返回
* 可以定义一个变量,来接收该结果
*
* 在函数中return后的语句都不会执行
*
* 如果return语句后不跟任何值就相当于返回一个undefined
* 如果函数中不写return,则也会返回undefined
*
* return后可以跟任意类型的值
举例:创建一个函数,用来计算三个数的和
function sum(a,b,c){
var d = a + b + c;
return d;
}
var result = sum(1,2,3);
console.log("result ="+result);
调用函数
变量result的值就是函数的执行结果
函数返回什么result的值就是什么
break 、continue 、return 之间的区别
break;
使用break可以退出当前循环
continue;
使用continue用于跳过当次循环
return;
使用return可以结束整个函数
二、函数的作用域
函数作用域的定义:
作用域(scope)指一个变量的作用的范围
js中一共有两种作用域:一种是全局作用域,另一种是函数作用(局部作用域)
全局作用域
直接编写在script标签中的js代码,都在全局作用域
全局作用域在页面打开时创建,在页面关闭时销毁
在全局作用域中有一个全局对象window,它代表的是一个浏览器窗口,它由浏览器创建,我们可以直接使用
在全局作用域中:创建的变量都会作为window对象的属性保存 ;创建的函数都会作为window对象的方法保存
全局作用域中的变量都是全局变量,在页面的任意的部分都可以访问的到
函数作用域
调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁
每调用一次函数就会创建一个新的函数作用域,他们之间是互相独立的
在我函数作用域中可以访问到全局作用域的变量
在全局作用域中无法访问到函数作用域的变量
当在函数作用域中操作一个变量时,它会先在自身作用域中寻找,如果有就直接使用;如果没有则向上一级作用域中寻找,直到找到全局作用域;如果全局作用域中依然没有找到,则会报错ReferenceError
在函数中要访问全局作用域变量可以使用window对象(window.×)
在函数中,不使用var声明的变量都会成为全局变量
定义形参就相当于在函数作用域中声明了变量
var a = 10;
function fun(){
//var a = "我是函数中的变量a";
var b = 20;
console.log(a);
}
fun();
//console.log(b);
注意: 在函数作用域中也有声明提前的特性 ;使用var关键字声明的变量,会在函数中所有代码执行之前被声明;函数声明也会在函数中所有代码执行之前执行
三、声明提前
声明提前包括两种,一种是变量的声明提前,另一种是函数的声明提前
变量的声明提前
使用var 关键字声明的变量,会在所有的代码执行之前被声明(但是不会赋值),但是如果声明变量时不使用var关键字,则变量不会被声明提前
函数的声明提前
使用函数声明形式创建的函数 function 函数名(){} ;它会在所有的代码执行之前就被创建,所以我们可以在函数声明前来调用函数; 使用函数表达式创建的函数,不会被声明提前,所以不能在声明前调用
console.log("a="+a);
var a=10;
//函数声明,会被提前创建
f();
function f(){
console.log(111);
}
//函数表达式,不会被提前调用
var fun = function(){
console.log(222);
}
fun();