js 语法和其他

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;
}

你可能感兴趣的:(js 语法和其他)