Python学习 Day27 JS函数(一)

JS函数(一)

  • 函数:可以理解为某一个常用功能的封装。当你想使用这个功能的时候,可以选择调用,执行这个功能即可
  • 注意:在JS脚本语言中,函数分为两种:关键字function定义函数、表达式形式函数
  • 函数使用分为两部分:声明和调用

(一)关键字形式函数

  • 关键字形式参数,需要通过关键字function进行声明、定义
  • 注意:几乎任何语言中,函数使用都是分为两种:声明、调用
	 基本语法:
	 //声明部分
	function fun(){
     
		函数体;
	}
	//调用部分
	fun();

在这里插入图片描述

  • 函数使用分为两部分:声明、调用【可以多次调用这个功能】
  • 函数在JS当中属于Object引用类型数据,不是Function类型的,【因为JS语言中没有这个数据类型】
  • 函数如果只是声明,但是没有调用,函数体里面代码不会执行
	//声明部分
	function fun(){
     
		//书写封装功能性代码
		console.log('疏影横斜');
	}
	//调用部分
	fun();
	fun();
	//函数在JS当中属于Object引用类型数据,不是Function类型的,【因为JS语言中没有这个数据类型】
	console.log(typeof fun);//function 引用类型数据
	console.log()

在这里插入图片描述


(二)形参与实参

  • 形参【形式参数】、实参【实际参数】
  • 在函数声明的时候,声明部分的小括号里面可以书写形参,多个形参用逗号隔开。形参是变量(只不过不需要用关键字var进行声明)
  • 在函数调用的时候,调用时候传递数据称之为实参,多个实参用逗号隔开,实参可以是任意类型数据
  • 注意:用户调用函数的时候会将实参依次赋值给形参
  • 形参的个数不能决定实参的个数,实参的个数也不能决定形参的个数
//声明一个关键字形式参数
	function add(a,b){
     
		console.log(a,b);
	}
	//调用函数的时候
	add('小米','小白');
	add(1,2);
	add(true,Infinity);
	add();
	add(1);//1 undefinied
	add(false,[]);
	add(1,2,3);

Python学习 Day27 JS函数(一)_第1张图片


(三)局部变量与全局变量

  • 变量:变量可以理解为是一个容器,可以承载任意类型的字面量或者计算完结果
  • 通过访问变量名字,就可以获取到变量存储的值
  • 注意:在JS当中变量分为两种:局部变量、全局变量

局部变量

  • 在JS当中局部变量只有两种情况:
    1.作为函数形参
    2.变量在函数体中声明
  • 局部变量只能在函数体内使用
//编写一个程序:声明一个函数,判断某个数字是否为偶数
	function isEven(num){
     
		if(num & 2 == 0){
     
			console.log(num+'是偶数');
		}else{
     
			console.log(num+'是奇数');
		}
	}
	isEven(56);
	isEven(876);

全局变量

  • 除了局部变量以外的变量都是全局变量,全局变量可以在JS行为层中任意地方使用
for(var m = 0;m < 3;m++){
     
		console.log(m);
	}
	console.log('我是循环体外部',m);
	
	if(true){
     
		var k = 9999;
		console.log(k);
	}
	console.log(k);
	
	function fun(){
     
		var mdl = '麦当劳';
		console.log(m);
		console.log(k);
	}
	fun();
	console.log(mdl);//Error

Python学习 Day27 JS函数(一)_第2张图片


(四)作用域

(1)作用域概述

  • 作用域:可以理解为是书写代码的范围【全局作用域、函数作用域】
  • 全局作用域书写JS代码范围最大的两个script标签之间
  • 函数也有作用域:函数的作用域为函数体【函数作用域是在全局作用域中的】
//声明一个变量
	var conunt = 345;//全局变量
	function fun(){
     
		console.log(count);
	}
	fun();

由于函数作用域没有局部变量count,因此会沿着作用域向上查找,看到全局作用域中有count,因此函数作用域“借来”使用一下

(2)作用域经典面试题

第一题

已有不“借”

   //第一题
   var num = 66;
   function fun(){
     
   	var num = 99;
   	console.log(num);
   }
   fun();//99

第二题

考察点:变量声明部分提升

  • 在JS当中任何的语句都阻挡不了变量声明部分的提升,会提升到当前作用域的上方(只声明不赋值——undefined)
var num = 66;
	function fun(){
     
		console.log(num);
		vae num = 99;
	}
	fun();//undefinied

第三题

var num = 66;
	function fun(){
     
		console.log(num);
		if(false){
     
			var num = 99;
		}
		fun();//undefinied
	}

你可能感兴趣的:(前端)