变量
- 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 = 11if(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
