js也就这么回事

js的预解析

在我们开始玩js之前,我们首先要知道js是怎么解析我们的代码的。
1.首先呢,在执行前,浏览器会把我们的变量和函数预解析(什么叫预解析呢,也就是把变量和函数的声明提升到当前作用域的最顶端),即

var i =0;

(在js中,var是用来声明变量的)

js在解析上边的代码是的顺序是这样的:

var i;
i = 0;

恐怕大家还会有疑惑对吧,再看下边:

var a = 1;
var b = 2; 
var c = a + b ;

js解析以上代码的顺序为

var a ;
var b ;
var c ;
a = 1 ;
b = 2 ;
c = a + b ;

2.预解析了之后呢,就该给函数赋值了,运行到相应变量和函数的代码的时候才会赋予其相对应的值,否则的话,只是把变量和函数声明提到作用域最顶端而已。

以上就是js的预解析,其实很好理解的对吧~

js的作用域

在上面我提到了作用域,有些朋友一定会疑惑什么是作用域,那么我就来讲讲作用域

js分为 全局作用域局部作用域

全局作用域

说得直白一点,就是如果一个变量或者函数是的全局的,那么在任何地方都可以引用这个变量或者函数。

局部作用域

从字面上理解也就是有区域的,在一定的区域才可以使用的函数或者变量。也就是在函数内部声明的变量或者函数所作用的区域是有限制的,只能在其函数的内部才可以使用。

注意

if 和 for 语句中定义的是全局作用域
只有函数才可以定义局部作用域
局部作用域相对于全局作用于来说是不可见的
函数内部的变量对外是不可见的,函数的内部可以访问外部函数的变量
内部函数没有变量的时候,会自动去外部获取变量

js 函数的创建方式

函数表达式

直接赋予变量,就是使用function关键字,再赋值给一个变量的函数 如:

var haHa = function(){
    console.log(这是函数表达式);
}

##声明函数
是使用function关键字 加上 函数名 声明的函数 如:

function fn(){
    console.log(这是声明函数)
}

##匿名函数
就是使用function函数,但是没有函数名

function(){
    console.log(这是匿名函数)
}

注意

上边只是写出各种函数的形式,但是上边的函数并不能执行; 那么,怎么让函数执行呢???现在就来告诉大家

函数表达式可以使用( );来立即执行

但是函数声明不可以,那么函数声明怎样执行呢?

函数声明可以使用( )( );其中第一个括号表示把匿名函数封装成函数表达式,第二个括号表示执行,也可以传参,传参的话也就是在第二个括号里填上你要传的参数。

所以上边的函数声明想要执行的话,就可以这样

(function(){
    console.log(这个函数可以执行了)
})();
Share