js语句
所有的js语句其实都会返回结果
在调试工具中执行 var a = 12 会返回undefined ,表示声明变量会返回undefined
表达式的副作用
函数执行的时候,有可能会改变全局变量。
function boo() {
a = a + 1
}
var a = 1;
boo(); // a被改变
a++表示先赋值再++。 就是用括号扩起来也没有用。想让他++完之后再赋值。需要使用逗号表达式
var a = 42;
a = a++; // 42
a = (a++) //42
a = (a++, a) // 43
在连续赋值时要注意,如果b没有声明则会创建一个全局变量
var a = b =42 ; 会创建一个全局变量 严格模式报错
也可以利用赋值语句的副作用。先执行再赋值。接着判断
可以利用赋值语句
function vowels(str) {
var matches;
if(str && (matches = str.match(/[aeiou]/g))) {
// 先判断 如果成功将值赋值给matches 失败返回null不进判断
return matches;
}
}
vowels("hello world")
大括号
var a = {
foo: bar()
}
去掉var a =不会报错
{
foo: bar()
}
// 因为{}只是I个普通的代码块。
而foo:bar()不会报错的原因是因为foo:被当成了标签, js的标签语法用来break和continue
function foo() {
bar: {
console.log('hello');
}
break bar;
console.log(666)
}
foo() // hello
else if
js中本身是没有else if的 是因为if else后面可以省略大括号
if () {
//
} else {
if () {
//
} else {
}
}
可以简写为
if() {
}
else if () {
}
else {
}
switch
switch中是===判断 如果想用==
var a = '42';
switch(true) {
case a == 10;
console.log(1);
break;
case a == 42;
console.log(2);
break;
default;
}
网友评论