变量
在JavaScript中变量是用关键字var来声明的
var a;
var name = "simon";
如果你声明一个变量,没有赋值给它,它的类型就是undefined。
一个和其他语言如 Java 不同的地方是,在 JavaScript 中,块没有作用域;只有函数有作用域。所以如果在复合语句中使用 var 来定义一个变量(如变量定义在一个 if 控制结构中),这个变量在整个函数里面都是可见的。
运算符
JavaScript的数字运算符是+,-,*,/和%-%是求余运算符(模运算)。值通过=赋值给变量,也有复合的赋值语句,像+=,-=。这些扩展出来就是x=x operator y。
x += 5
x = x + 5
你可以分别使用
++
和
—
来实现自加和自减。它们可以被用作前置和后置运算。
运算符+ 也可以实现字符串连接
> "hello" + " world"
hello world
如果你把字符串和一个数字相加(或者其他类型的值),所有的都会被先转换为字符串,下面的可能会让你犯错:
> "3" + 4 + 5
345
> 3 + 4 + "5"
75
把一个空串和其他的值相加是一个将这个值转换成字符串的有效方式。
在JavaScript中可以通过使用<,>,<=和>=来做比较运算。这对数字和字符串都有效。等号运算相对来说简单一点。如果你给定两个不同类型的值,双等号会执行强制类型转换,这样有时会产生有趣的结果:
> "dog" == "dog"
true
> 1 == true
true
为了防止强制类型转换,使用
===
运算符
> 1 === true
false
> true === true
true
同样也有!=和!==运算符。
JavaScript也有位运算符。如果你想使用它们,同样也能使用得到(像其他语言中一样)。
控制结构
JavaScript有一个和C语言家族类似的控制结构集合。通过if和else来实现条件控制语句;如果有需要你也可以将它们连在一起
var name = "kittens";
if (name == "puppies") {
name += "!";
} else if (name == "kittens") {
name += "!!";
} else {
name = "!" + name;
}
name == "kittens!!"
JavaScript有while循环和do-while循环。第一个适用于基本的循环;第二个适用于你喜欢确保循环体至少被执行一次的循环。
while (true) {
// an infinite loop!
}
var input;
do {
input = get_input();
} while (inputIsNotValid(input))
JavaScript中的for循环和C和Java中的一样:它允许你在一行中提供控制循环的信息。
for (var i = 0; i < 5; i++) {
// Will execute 5 times
}
Switch表达式可用作基于一个数字或字符串的多个分支:
switch(action) {
case 'draw':
drawit();
break;
case 'eat':
eatit();
break;
default:
donothing();
}
如果你没有添加一个
break
表达之,执行代码将会直接走到下一个条件分支中。这通常是你不希望看到的
—
事实上,如果你打算做一些有助于调试和维护的事情,那么在仔细考虑了的
fallthrough
代码之后加一个注释是非常有价值的。
switch(a) {
case 1: // fallthrough
case 2:
eatit();
break;
default:
donothing();
}
Default语句分支是可选的。只要你愿意,你可以在switch部分或者case部分使用表达式;它们之间将使用===运算符来做比较。