函数
函数是一段代码,只能被定义一次,但可以被执行或调用多次
定义函数
定义函数的方式有两种
/*
* 字面量/直接量方式
* var 函数名称=function(){
* 函数体
* }//定义函数时,函数体内容不会被执行
* */
/* var name =function () {
console.log('这是一个函数')
};
fun();//调用函数,才能执行函数体内容*/
/*
* 函数声明方式
* function 函数名称(){
* 函数体
* }
*/
function fun(){
console.log('这是一个函数')
}
函数的参数
/* 定义函数
function 函数名称(形参){
函数体
}
* 定义函数时的参数是形参
* 形参类似于一个变量
* 形参默认为未定义任何指时->undefined
*///形参允许定义多个,使用逗号分开
function fun(a,b,c) {//在函数中定义一个变量,但未初始化值
console.log(a+b,c)
}
/*
* 调用函数
* 函数名称(实参)
* 函数的调用->实参(值)*/
fun(23,100);//为函数中定义的变量初始化值
/*
形参与实参
* 形参的个数与实参可以是一致的
* 形参的个数多于实参的个数 -> 多余的形参没有值(默认为 undefined)
* 实参的个数多余形参的个数 -> 多余的实参没有对应的形参
* 形参与实参根据占位符进行一一对应
*/
return语句
函数可以包含一个返回语句(return),这不是必须的,return使函数可以作为一个值使用
/* 函数的return语句
* 并不是必要的
* 作用:作为函数的返回值
* 用法:一般在函数的最后面,但并不强制
* */
function fun(){
console.log('这是一个函数');
return 23;
}
fun();//这是一个函数
console.log(fun());//这是一个函数/23
console.log(fun);//[Function:fun]
/* return语句
* 可以吧在函数的最后面
* 但return之后的代码不会再执行
* 当return并未设置值时,结果为undefined*/
function fn(){
console.log('这是return语句之前...');
return;
console.log('这是return语句之后...');
}
var result = fn();
console.log(result);//这是return语句之前.../undefined
预定义函数
JavaScript预定义了一组函数,又称为全局函数,可以直接使用
eval()函数
eval()函数用于执行以字符串形式(Sting)出现的JavaScript代码。
// 定义一个字符串 - 文本内容是JavaScript代码
var str = 'console.log("测试...")';
// console.log(str);
/*
eval()函数
* 作用 - 将一个字符串类型的JavaScript代码转换为真正的JavaScript代码,并且执行
* 问题 - 安全问题
*/
eval(str);//测试
作用域
变量与函数都有作用域。作用域就是变量和函数可以被访问的范围,可以分为全局作用域和函数作用域(局部作用域)。
定义在全局作用域,可以在任何位置访问,局部作用域只能在指定函数内部访问
变量的作用域
/* 全局作用域(函数作用域之外的范围)-全局变量
全局变量的作用域->全局作用域+函数作用域
* */
var v1 = 23;
console.log(v1);
function fun() {
/* 函数作用域-局部变量
* 局部变量的作用域-当前函数内部
* */
var v2 = 100
console.log(v1)
console.log(v2)
}
fun();//23/100
//全局作用域不能访问局部作用域
console.log(v2);//v2 is not defined
声明提前
可以先引用变量再声明变量,因为变量的声明会被默认在函数和语句之前,相当于先声明了一个变量但为初始化值,输出为undefinef
console.log(v1);//undefined
var v1 = 100;
console.log(v1);//100
按值传递
按值传递就是讲实参变量复制一份传递给形参变量,实参不变
/*定义一个全局变量*/
var v1 = 23;
/*定义一个函数*/
function fun(v1){
v1++;
console.log(v1)//24
}
/*调用指定函数,实参传递的是全局变量的值*/
fun(v1);//24
/*调用指定全局变量*/
console.log(v1);//23
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。