JavaScript是一种前端的语言 ,最近因为工作的需要所以进行一下学习,同时准备记录一下笔记,帮助自己的对语言的认识可以提高。目前学习了是ES6标准的js语言,同时增加了许多新的数据类型。
1循环
js的循环是用for来进行的,例如:
var x = 0;
var i;
for (i=1;i<=1000;i++){
x = x + i;
}
for循环最常用的是利用索引来遍历数组,并且可以使用break,跳出循环。
while循环
var x=0;
var n=99;
while(n>0) {
x = x + n;
n = n -2;
}
do...while 循环
var n=0;
do {
n = n +1;
} while (n <100);
变量与作用域
在js中,变量的声明是用var来进行的,例如var x=1 ,就是声明一个x变量并赋值为1。
同时js的函数是可以嵌套的,两个函数如果有相同的变量名,优先是内部的变量,然后才是外部的函数名。
举个栗子:
function foo(){
var x = 1;
function bar(){
var y = x + 1;
}
var z = y + 1;
}
优先使用内部的x的变量。
变量提升
js中变量会先在头部声明,所以一个函数中最好把声明的函数一起在函数头部先声明后再使用。
全局作用域
不在函数中定义的变量就是全局的,可以全局进行使用,全局的变量绑定了一个window的属性。
函数也可以定义成全局的变量例如:
var foo = function() {}并绑定window 的属性。
function foo(){
alert('foo');
}
foo();//直接调用foo()
window.foo()//通过window.foo()来调用
名字空间
如果所有的全局变量都绑定到window这个属性,那么难免会出现调用的错误,所以定义一个全局的变量,
var MYAPP = {};
MYAPP.name = 'myapp';
MYAPP.version =1.0
MYAPP.foo = function() {
return 'foo';
}
把代码放入MYAPP的名字空间中,会减少全局变量的冲突。
块级的作用域
使用let替代var声明一个块级的作用域:
function foo(){
var sum = 0;
for (let i = 0;i<100;i++){
sum +=i;
}
i+=1//SyntaxError
}