JavaScript学习笔记(二) JavaScript函数

函数


世上唯有贫穷可以不劳而获。


函数定义

JavaScript中使用关键字function定义函数

//function 定义函数关键字; max函数名称; a,b函数的参数;{……} 函数体 ;
function max(a,b){
	if(a>b){
		return a;
		}
	else{
	return b;
	}
}

注意: JavaScript 函数是执行到return处就执行完毕,后面的语句均不会执行。

JavaScript中函数也是一个对象,可以将其赋值给某个变量

var max=function(a,b){
	if(a>b){
		return a;
		}
	else{
	return b;
	}
};

函数调用

函数调用使用 函数名(参数列表)

//上面的两种函数定义方式,调用方式一致
var value=max(5,10) //调用上面的max函数
console.log(value); //10

注意: 传入的参数类型与函数参数类型不匹配的话会返回undefined NaN等值


arguments

JavaScript中自带的关键字,每个函数内均有,存储的是调用该函数时传入的所有参数。

function max(a,b){
   
	console.log('a='+a+' b='+b);
	for (var i=0; i<arguments.length; i++) {
   
        console.log('arg ' + i + ' = ' + arguments[i]); 
        // arg 0 = 10, arg 1 = 20……
    }
};
max(10,20,30,40,50);

注意: JavaScript函数在调用时传入的参数数量和定义不一致不会报错


rest参数

ES6中新增rest参数,用于获取函数调用时多给的参数

//rest参数将调用时除a b以外的参数放到一个数组中
function max(a,b,...rest){
   
	console.log('a='+a+' b='+b);
	console.log(rest); 
};
max(10,20,30,40,50);
//a=10 b=20
//[30, 40, 50]

变量作用域

var 定义的变量只能在作用域内访问

//不在任何函数内的变量 作用域在其声明语句后面
var y=5;//和 y=5 等效

//在函数体内定义的变量只能在函数内使用
function fun() {
   
    var x = 1;
    console.log('fun:y='+y);
}
//console.log(x) //报错 x未定义 Uncaught ReferenceError: x is not defined
fun(); //fun:y=5
console.log(y); //5

JavaScript存在函数嵌套,此时,内部函数可以访问外部函数的变量,反之不成立

function fun(){
   
    var x = 1;
    function innerFun(){
   
    	var y = 2;
    	console.log(x); //1
    	}
    innerFun();
    //console.log(y) //报错 y未定义
};
fun();

注意: JavaScript中变量的优先级是由内到外的,即内函数会覆盖外函数的重名变量,依次类推;


全局作用域

拥有全局作用域的变量叫做全局变量;全局作用域的所有变量都会变成window的属性

//定义全局变量的三种方式
var a=1; //var定义变量且不在任何函数中
b=2; //不使用var关键字定义的变量
window.c=3; //直接定义为window的属性

//调用全局变量,全局函数也可以类似调用
console.log(b); //2
console.log(window.b); //2

名字空间

JavaScript中所有的全局变量、函数都会绑定到同一个window上,使用多了容易遭成命名冲突;解决办法就是将自己使用的变量函数等放到一个名字空间中。

//定义全局变量 名字空间
var mySpace={
   };

//将变量函数等绑定到自己的名字空间
//只是将以前隐藏了的window换成自己定义的变量
mySpace.name='namespace';
mySpace.fun=function(){
   
	console.log('mySpace fun');
}

局部作用域

ES6中新增关键字let,let补充了JavaScript块级作用域的空白


function fun() {
   
	//var
    for (var i=0; i<10; i++) {
   
      
    }
    console.log(i);//在for循环外能访问到 10
    //let
    for (let j=0; j<10; j++) {
   
      
    }
    //console.log(j);//报错 j的作用域就在for循环内
 }
fun();

常量

ES6新增关键字const来定义常量,const也具有块级作用域

const MAX=1000000;
//MAX=999999;//报错
console.log(MAX);//1000000
//无法修改常量的值

解析赋值

ES6新增解析赋值,即同时向多个变量赋值

var [a,b,c]=[10</
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值