语法
日志函数
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])
}