人人好,我从今天开始就会正式讲javascript的语法方面。
变量
js中的变量平常运用var来声明(es6的let不在本教程议论范围内),能够用来定义任何品种的变量,假如只对变量进行了定义而没有赋值,如许变量会默以为undefined。
var a=100;
var b="hello,world";
var c=true;
变量提拔
在js中,用var定义的变量会涌现提拔的效果,变量平常会提拔到地点作用域的最顶部,简朴来讲就是,假如变量在函数中,就会提拔到函数最顶部,假如在全局作用域(window)中,就会提拔到一切代码的最顶部。
这里给一个例子:
console.log(a);
var a=100;
//输出效果为undefined
这里实际上真正的代码是:
var a;
console.log(a);
a=100;
因为a提拔到顶部后未被赋值,所以末了会输出undefined,而且亲测严厉形式下变量提拔不会受到影响。
(提拔:在js中屡次声明一个变量,只要末了一次声明有用)
没有块级作用域
任何一对花括号中的语句集都属于一个块,在这当中定义的一切变量在代码块外都是不可见的,我们称之为块级作用域
在java和c等言语中,块级作用域的效果很明显,比方下面这段代码:
#include <stdio.h>
void main()
{
int i=2;
i--;
if(i)
{
int j=3;
}
printf("%d/n",j);
}
运转这段代码,会涌现毛病。能够看到,C言语具有块级作用域,因为j是在if的语句块中定义的,因而,它在块外是无法访问的。
但是在js中就不是如许了:
for(var i=0;i<3;i++){}
console.log(i); //输出3
所以在js内里并没有块级作用域,它只要函数作用域,在函数内部用var定义的变量不能被外部访问到,因为函数挪用完毕后,变量会被自动烧毁。
(提醒:在函数内部不必var直接声明的变量会默以为全局变量,比方:test=100;这个test在函数外部依旧能被访问到,因为默以为全局变量,但是在严厉形式下如许声明一个变量会失足)
那末怎样完成块级作用域呢?
在js中有一种马上实行的函数,在内里定义的变量平常不会泄漏到外界,因为这里还没有讲函数,所以我只轻微提一下,今后再好好讲。
我只是把js每一个部份的重点理清一下,详细的照样须要人人本身去看,比方关键字,解释,辨别大小写等等,这套教程只适合在细碎时候去看,假如人人能有所收成,我就很满足啦。