当js来敲门1
js大课堂1
细想之下,今天学习的内容并没有多少。大致有
浏览器的准备工作
1.浏览器在执行之前会把变量和函数表达式预解析,并且提升到当前作用域的顶端。
2.给函数赋值
如
var a=0;-----相当于-----var a;
a=0;
函数的作用域
只有函数才能生成局部变量或作用域
全局变量可以在任何地方访问
函数内部的变量,对外是不可见的
函数内部可以访问外部函数的变量
函数的三种形式
函数的三种形式:声明函数,匿名函数,函数表达式。
声明函数:使用function关键字+函数名
如
function name(){
console.log('0909')
}
name ();
匿名函数:就是使用function关键字是没有函数名的的函数
如
(function(){
console.log('hoho')
})()
函数表达式:使用function关键字,没有函数名,赋值给一个变量
如
var f =function(){
console.log('hoho')
}
f ()
函数表达式vs函数声明的 区别:函数表达式可以使用()操作符,立即执行;函数声明不可以;
简单复习运用retrun和传参
例子
function fn(){
var max=10;
var fn2=function(num){
if (num>max) {
console.log(max);
console.log(num);
};
}
return fn2;
}
var news=fn();
news(20);
我们来解析一下该程序的运行流程:
先看外部函数声明fn,如果fn执行的话它的最后得到结果是return fn2;也就是说fn的返回值为函数表达式为fn2。接下来我们再看看fn2如果执行的话会做什么。我们可以看到 var fn2=function(num),fn2里有个参数num,这就需要我们注意了,待fn2执行时要记得把里面的参数传到程序中。
好接着看fn2内部都有什么执行内容?if语句表示判断,如果参数num大于max则执行下部程序,好接下来我们就要找max的值,在函数表达式中我们并没有找到关于max的赋值语句,那再看一下表达式外部的声明函数fn,我们会发现 var max=10;哎,找到max的值了,10.
好接着看判断语句if内部究竟做了什么?console.log(max);console.log(num);打印两个值max,num。好,我们知道这个程序是干什么的了就好办了。
再看函数声明fn外部
var news=fn();
news(20);
首先呢,定义一个变量叫news,并把fn执行后的结果赋值给他,那么根据上面的解析,fn执行后的结果就是返回函数表达式fn2喽,所以就等于把函数表达式fn2赋值给news了。
其次再解析 news(20)干了什么?news(20)就相当于fn2(20)这点应该没疑问。 作为参数的20要取代函数表达式里所有的num,看一下if判断语句if(20>10),哎,成立。那么执行接下来的内部程序,打印出max和num的值,也就是10和20。
好,本段例题解析结束。关于return我们需要注意的是:
return的默认值为undefined
<!doctype html>