函数的定义方式
1.声明式定义函数:
function 函数名(){}
2.函数表达式(赋值式)
var 函数名=function(){
}
函数名()
求两个数的最大值
var getMax=function(m,n){
var max=m
if(n>max){
max=n
}
return max
}
var m1=getMax(34,56)
console.log('m1')
m1用于接收return返回出的值
一、预解析
==》浏览器javascript引擎(负责解析执行javascript的代码)
预解析:执行javascript代码之前,扫描通读js代码,如果发现声明式函数和var声明的变量,将其提前。
1.预解析同名情况:声明式函数优先
fun()
console.log('111fun:',fun)----------->再执行
function fun(){------------->先执行声明函数
console.log('fun>>>')
}
var fun=100
console.log('22fun:',fun)-------->最后执行
2.if条件成不成立语句块都会解析
var num
console.log(num){---------->浏览器的预解析会将声明变量提前
if(false){
var num=100
}
console.log(num)--------》条件不成立不执行if语句,但浏览器会解析
3.return语句后的代码不执行,但会进行解析:
function fun(){
console.log(num)
if(true){
return;
}
var num=100;-------->预解析会将var num提前,但return后的代码不会执行
}
fun()
示例:
/*
1. 程序输出结果是多少?
*/
console.log(num)
var num = 10
f()
console.log(f2)
function f() {
console.log(n)
var n = 20
console.log(n)
}
console.log(num)
var f2 = function () {
console.log('我是f2')
}
/*
解析后的代码:
<script>
console.log(num)
var num = 10
function f() {
console.log(n)
var n = 20
console.log(n)
}
f()
console.log(f2)
console.log(num)
var f2 = function () {
console.log('我是f2')
}
</script>
运行结果:undefined undefined 20 undefined 10
2 . 程序代码片段运行结果是?
*/
var data = 'abc'
fun(data)
console.log(data)
function fun(data) {
data += 'xyz'
}
形参的名字可以改变,实参不能改变
<script>
// 2 . 程序代码片段运行结果是?
var data = 'abc'
function fun(m) {
m += 'xyz'
}
fun(data)
console.log(data)
</script>
运行结果:abc