JS函数简介

JS函数

函数是什么?

函数其实就抽取写好的js代码 作为一个通用的代码块(封装)
作用: 减少代码冗余(过多) 方便调用 (提供效率 提高代码的可读性) 便于维护(二次修改)

js有哪些函数

1.系统函数 2.内置函数 (只需要调用) 3.自定义函数
函数带括号就是函数 //函数没有调用是不会执行的
系统函数 就是系统自带的函数 alert()
内置函数 Math.pow() 属于Math对象的内置函数
自定义函数 你自己写的函数 需要先书写 再进行调用
函数主要依赖于function关键词进行定义 一般的函数名以fn开头

自定义函数的三种声明方式

1.第一种声明
function 函数名(参数1,参数2…){
函数体(需要进行的操作)
}
function showMessage(){ //showMessage 就是函数名
	console.log("hello function");//函数体
}
//调用 使用 函数名()
showMessage()
函数的参数可以写 可以不写 具体要看对应的参数有没有被使用到
在函数定义的时候里面的参数名可以随便写 因为他是一个形参
function add(number1){
	console.log('hello world');
}
//因为上述的形参没有被使用到 那么我们可以省略这个参数传递
add()
2.第二种声明
var 变量名 = function(){
函数体
}
var fn = function(){ //fn就是一个变量名 表示当前fn是一个函数 fn就是表示这个函数
	console.log("hello function!!!");
}
//调用 使用变量名()
fn()
3.第三种声明 使用new的方式 不常用 凡是使用new的都是对象
var 变量名 = new Function(){
函数体
}
var fnObj = new Function("console.log('hello function object')")
//调用
fnObj()
函数名和变量接受函数的区别
fn1() //顺序执行的
//fn2() //fn2是 not function
// 在初始状态页面加载的时候 js会优先加载function以及对应的变量命名 但是他不会加载变量赋值的过程
console.log(typeof fn2); //undefined
//使用function直接写一个函数
function fn1(){
	console.log("我是函数1");
}
//使用变量接收一个函数
var fn2 = function(){
	console.log("我是函数2");
}       
//关于fn2调用在fn2变量赋值之前 fn2是undefined值
// var fn2
// fn2()
// fn2 = function(){
// }
return
return关键词是用于函数里面返回数据的 没有数据返回的话 默认返回undefined
function fn(){
	console.log('hello');
}
//fn调用了没有 函数名() 他就会调用
var a = fn(); //调用了一遍 a是相当于fn的返回值 而不是fn这个函数
console.log(a);//undefined
俩个数相加的方法
function addToTwoNumber(number1, number2) {
	return number1 + number2
}
在调用的时候进行参数传递 传递的参数必须要为实参(实际值的参数 常量)
var number03 = addToTwoNumber(1, 2)//调用上面方法
console.log(number03);//3
var a = 10
var result = addToTwoNumber(a, 10)//调用上面方法
console.log(result);//20

变量作用域

变量分为全局变量 作用域为全局和局部变量为对应的代码块内(function)
全局作用域可以在局部调用 局部作用不能应用在全局
全局作用域的东西他对应的可以在局部中更改 局部作用域不能再全局更改
代码块不包含 if switch 以及 for (声明的变量还是全局变量)
var a = 10 //全局变量
for(var i=0;i<10;i++){ //i++执行的次数比里面的多一次
	var a = 5 //全局变量
	console.log(a); //5 
}
console.log(a); //全局变量 5
console.log(i); //全局变量 还是10
var b = 10 //全局变量
function fn(){ //代码块
	var b = 20 //重新声明局部变量b
	console.log(b); //局部变量 20
}
//调用
fn()
console.log(b); //全局变量 10
// 在function里面的声明的变量 他的作用域只存在于function 对应的全局声明的变量是可以存在于全局的
var c = 30
function fn1(){
	c = 20 //var 关键词用来声明变量  将全局变量 c 进行赋值 20 引用全局变量c
	console.log(c); // 20
}
//调用
fn1() 
console.log(c);//20

作用域链

函数的嵌套
var first = 50 //全局变量
//关于函数的嵌套 如果你调用了最外层的function 那么是不会自动调用内层的function
function fn1(){
	var a = 10 //局部变量
	function fn2(){
		var b = 20 //局部变量
		function fn3(){
			var c = 30 //局部变量
			// var f
			function fn4(){
				var d = 40 //局部变量
				//f未定义的 找不到这个f 报错
				//如果找不到对应的变量就会出现 报错
				//找的到就是undefined
				console.log(a+b+c+d+first+f);//a是fn1 b是fn2 c是fn3 d自身的 first全局变量
				//当你的里面不包含这个变量 他会向对应上层去寻找这个变量
				//这个逐层向上寻找变量的过程叫做作用域链
				//什么叫作用域 就是一个变量的作用的区域
				function fn5(){
					var f = 10
				}
			}
			fn4()
		}
		fn3() //调用第三层的function
	}
	fn2()//调用第二层的function
}
//调用最外层的function
fn1() // 10+20+30+40+50 = 150
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值