变量
- javascript的变量名区分大小写,A和a是两个不同的变量
声明变量而没有赋值,则该变量为
**undefined**
var arr;
console.log(arr);
//undefined
没有声明就直接使用变量,javascript会报引用错误
console.log(x);//ReferenceError: x is not defined
同一条
var
中可声明多个变量- 所有变量的声明语句,都会被提升到代码的头部,包括函数,这叫做变量提升
a的声明提到了前面,所以代码不会报错,赋值却托在了后面,所以是输出了为赋值的变量console.log(a);
var a=1;
//undefined
以上代码等同于
var a;
console.log(a);
a=1;
标识符
- 第一个字符,可以是任意 Unicode 字母(包括英文字母和其他语言的字母),以及美元符号($)和下划线(_)
- 第二个字符及后面的字符,除了 Unicode 字母、美元符号和下划线,还可以用数字0-9
- 中文是合法的标识符
var 变量 = 1
- javascript有一些保留字,不能用作标识符
arguments、break、case、catch、class、const、continue、debugger、default、delete、do、else、enum、eval、export、extends、false、finally、for、function、if、implements、import、in、instanceof、interface、let、new、null、package、private、protected、public、return、static、super、switch、this、throw、true、try、typeof、var、void、while、with、yield
语句基本规则
- 语句后面要用分号结束“;”但 function test(){},for(){},if(){}后面都不用加分号
- js 语法错误会引发后续代码终止,但不会影响其它 js 代码块
- 书写格式要规范,“= + / -”两边都应该有空格
条件语句
if
if后面的表达式之中,不要混淆赋值表达式(=)和相等运算符(==)
var x = 1;
var y = 2;
if(x=y){
console.log(x);
}
//2
if不加上括号,只能包括下面第一行代码
var a = 11
if(a < 10)
console.log('a是一位数')
console.log('a是小于 10 的数')
//a是小于 10 的数
并没有进行bool运算,而是把y的值赋给了x,代码不会报错,所以很容造成疏忽,很多开发者喜欢将常量写在运算符左边,这样一旦写错等号就会报错_if (2 = x) { // 报错_
switch
switch语句后面的表达式,与case语句后面的表示式比较运行结果时,采用的是严格相等运算符,这意味着比较时不会发生类型转换
var a = 1;
switch(a){
case true:
console.log(1);
break;
default:
console.log(0);
}
//0
三元运算符
应用
var myVar;
var arr = myVar ? '1':'0';
console.log(arr);
//0
var msg = '数字' + n + '是' + (n % 2 === 0 ? '偶数' : '奇数');
循环语句
while
例子
var i=0;
while(i<100){
console.log(i);
i++;
}
while (true) {
console.log('Hello, world');
}//死循环
for
所有for循环,都可以改写成while循环
for(var i=0;i<100;i++){
console.log(i);
}
do while
无论如何都会执行一次
var i=0;
do{
console.log(i);
i++;
}while(i<0)
//0
break 和 continue
break退出代码块或者循环
for(var i=0;i<10;i++){
console.log(i);
if(i===5)
break;
}
//0,1,2,3,4,5
continue终止本次循坏,开始下一个循环
for(var i=0;i<10;i++){
if(i===5)
continue;
console.log(i);
}
//0,1,2,3,4,6,7,8,9
label
标签用于定位语句,便于break,continue指定位置
top:
for(var i=0;i<3;i++){
for(var j=0;j<3;j++){
if(i===1 && j===1)
break top;
console.log(i,j);
}
}
//0 0
//0 1
//0 2
//1 0
top:
for(var i=0;i<3;i++){
for(var j=0;j<3;j++){
if(i===1 && j===1)
continue top;
console.log(i,j);
}
}
//0 0
//0 1
//0 2
//1 0
//2 0
//2 1
//2 2