语法

日志函数

console 控制台输出日志信息的方法。这些方法仅应该用于打印变量调试,并不应该用来给最终用户呈现信息。

console.log('Hello,word!'); // "Hello,word";

变量声明

var 、let 、const

在ES5的时候 我们只能通过 var 声明变量,由于没有常量的声明概念,所以我们会用全大写来代表这个变量是一个常量。例如:

var variable = 'Variable';
var CONSTANT = 'Constant';

在ES6之后,我们可以分别通过 let 和 const 声明变量和常量。例如:

let   variable = 'Variable';
const CONSTANT = 'Constant';
  • 注意:变量可重复负值,常量不可,定义常量时必须制定一个值。
  • 变量在使用前,请先申明。

作用域

执行环境定义了变量对象有权访问其他的数据,每个执行环境都有一个与之关联的变量对象,环境定义的所有变量和函数都保存在这个对象中,解析器在处理数据时会在后台使用到它。当代码在一个环境中执行时,会创建变量对象的一个作用域链,保证对执行环境有权访问的所有变量和函数的有序访问。作用域链中的下一个变量对象来自包含环境,再下一个变量对象则来自下一个包含环境,全局执行环境的变量对象始终都是作用域链中的最后一个对象。

比较简单的说明就是,当前变量在什么情况下能起作用。

全局作用域

全局作用域是最外层的一个执行环境,所有地方都可以引用到。一般在最外层定义(推荐使用),及所有没有 var 直接赋值的变量都属于全局变量(不推荐使用)。

var global = 100;

global_2 = 100;

函数作用域

每个函数都有自己的执行环境,当执行流进入一个函数时,函数的环境就会被推入一个环境栈中,当函数执行完毕的时候栈从环境中弹出,把所有权返回给执行环境。函数可以当作值来传递,函数内部,可以访问外部函数的作用域,称之为闭包。

function funtest(){
    var funstr = 'test'
}

块级作用域

ECMAScript 6(简称ES6)中新增了块级作用域。 块作用域由 { } 包括,if 语句和 for 语句里面的 { } 也属于块作用域。let 和 const 的声明的变量就仅在块级别作用域生效。

if(true){
    let tmp = 123
}

运行符号

布尔操作符( && 、|| 、!)

var bool_1 = true && false; // false
var bool_2 = true || false; // true
var bool_3 = !true;         // false
var bool_4 = !!NaN;         // false

加减乘除运算符( +、-、 * 、 / 、% )

var plus       = 10 + 1; // 11
var minus      = 10 - 1; // 9
var multiplied = 10 * 2; // 20
var divided    = 10 / 2; // 5
var remainder  = 10 % 2; // 0 

关系运算符 ( > 、< )

var greater = 5 > 3; // true
var less    = 5 < 3; // false

相等运算符( == 、 === )

var equal     = ( 10 == '10'); // true
var congruent = ( 10 === '10'); // false

条件操作符

var ifstr = true ? 'ok' : 'no'; // ok

赋值操作符

var num = 10;
// num = num + 10;
num += 10; // 20

递增递减操作符 ( ++ )

var num = 10;
num ++; // 10
++ num; // 12

条件判断语句

if

var tmp = 12;
if(tmp > 10){
    console.log(tmp + ' > 12')
}else{
    console.log(tmp + ' < 12')
}

switch

如果超过 4 个及以上的多重判断,建议用 switch 语法进行判断。

var tmp = 12;
switch (tmp) {
    case 12:
        tmp = tmp * tmp
        break;
    case 13:
        tmp = tmp + tmp
        break;
    default:
        tmp = tmp / tmp
}
console.log(tmp)

循环语句

for

for 语句也是前测试循环语句,但它具备在执行循环前初始化变量和定义循环后要执行的代码能力。

var count = 0;

for (var i = 0;i < 10; i++ ) {
    count = count + i
}
console.log(count)

以上代码定义变量 i 的初始值为 0。只有当条件表达式( i < 10 ) 返回 true 的情况下才会进入 for 循环。如果执行了循环体中的代码,则会对循环后的表达式 ( i ++ )求值,即递增 i 的值。

for-in

for-in 语句是一种精准的迭代语句,可以用来枚举对象属性。

var obj = { a: 1, b: 2 };

for( var key in obj){
    console.log(key,obj[key])
}

参考