1.特殊的声明变量
var arr = [1,,,3] ; // 中间的元素值为 undefined
2.变量作用域
全局变量:不在任何函数内声明的变量
局部变量 :在函数体内声明的变量
(注意 : 非严格模式下,在函数体内如果不用var声明变量,则该变量会变成全局变量)
块级作用域:每一对花括号之间的代码都有各自的作用域。
函数作用域:变量在声明他们的函数体以及这个函数体嵌套的任意函数体内都是有定义的,都是可以访问的.这意味着变量在声明之前甚至已经可用.这个特性被称为 声明提前 . 即 js 函数里声明的所有变量(但不涉及赋值)都被提前至函数的顶部.
javascript使用的是函数作用域
function add()
{
console.log(str); // 输出undefined
var str = 'local';
console.log(str); // 输出 local
}
相当于
function add()
{
var str; //声明提前
console.log(str); // 输出undefined
str = 'local';
console.log(str); // 输出 local
}
3.typeof 表达式
变量类型 | typeof表达式值 |
---|---|
字符串 | string |
数字 / NaN | number |
函数 | function |
任意内置对象(非函数) | object |
true / false | boolean |
undefined | undefined |
null | object |
4.“use strict” 指令
"use strict"是ECMAScript5引入的一条指令。指令不是语句(但非常接近语句)
它只能出现在脚本代码的开始或者函数体的开始,任意实体语句之前。使用该指令的目的是说明(脚本或函数中)后续的代码将会解析为严格代码。