var 变量可以没有初始值,变量可以修改,变量可以覆盖,存在变量提升。
// 变量提升机制
console.log(name)// undefined
var name = "Amos";
let 块级作用域,不允许重复声明,不存在变量提升,值在当前作用域内生效,在使用未定义的变量会报错。
console.log(name); // ReferenceError:name is not defined
let name= "Amose"
const 变量必须有初始值,变量值不可改变,变量值不可覆盖,只有在当前作用域内有效。变量不可提升:
console.log(name); // ReferenceError:name is not defined
const name= "Amose"
注意:一个常量不能和它所在的作用域的其它变量或函数有相同的名称
在函数内部不使用关键字声明变量就变成了犬决变量
var a = 'hello world';
function b(){
a = 'hello Amose'
console.log(a)
};
b() ; // 'hello Amose'
console.log(a); // 'hello Amose'
语句:
if语句
当条件为真,if语句会执行一段语句,如果条件为假,则执行另一段语句。
if(true){ }else{ }
示例:使用if...else
if(条件){
条件为真的时候执行
}else{
条件为假的时候执行
}
使用else if
if(条件){
条件为真的时候执行
}else if(条件) {
条件为真的时候执行
}else{
条件为假的时候执行
}
注意:如果在条件中使用赋值运算,用元括号包裹赋值运算。
if((a=b)){ }
if...else的简写方式三目运算: (条件)?表达式1:表达式2;
do-while 语句
在检查条件是否为真之前执行一次代码块,然后如果条件为真的话,就会重复这个循环。
do{ // 需要执行的代码} while (条件)
实例:
do{
console.log("The number is"+ i)
i++
}
while (i<5)
while 语句
while 循环会一直循环代码块,只要指定的条件为true
while(条件){要执行的代码块}
while (i<10){
text += "数字是"+i;
i++
}
for语句
同样的代码执行多次,并且每次的值都不同
语法:for (语句1;语句2;语句3) { 找执行的代码块 }
示例:循环一个数组
var array = [1,2,3,4,5,6,7,8];
for(var i=0; i< arry.length;i++){
console.log(i,array[i])
}
for-in语句
语句遍历对象的属性。
var person = {fname:"Bille",lname:"Gates",age:62}
var text = “”;
var x;
for (x in person){
text += person
}
循环数组
var arr = [1,2,3];
let index;
for(index in arr) {
console.log("arr["+index+"]"+arr[index])
}
label 语句
语句的前面有标签label 相当于定位符,语句部分可以使任意语句。
label
statement
break 和 continue 语句
break 语句 跳出 循环
break 语句 会中断循环,并继续执行循环之后的代码
for (i = 0; i < 10; i++){
if(i === 3){ break }
text += "数字是"+i+ "<br>";
}
continue 语句 跳过 循环中的一个迭代
continue 语句 中断(循环中) 的一个迭代,如果发生指定的条件,然后继续循环中的下一个迭代。
本例跳过值3
for(i = 0; i < 10: i++){
if (i ===3){
continue;
}
text += "数字是" + i + "<bar>";
}
with 语句
with 语句是逐级的对象访问提供命名空间式的速写方式,也就是在指定的diam区域,直接通过节点名称调用对象。
var obj = {a:1,b:2,c:3}
// 改变 obj 中每一项的值,
obj.a = 2;
obj.b = 3;
obj.c = 4;
用with 的写法
with (obj){
a = 3;
b= 4;
c = 5;
}
switch
switch 语句来选择要执行的多个代码模块之一。
语法:
switch(num){
case 1:
执行代码块 1
break;
case 2:
执行代码 2
break;
default:
与 case 1 和 case 2 不同时执行的代码。
}