学海无涯,回头是岸
不务正业
极简老人

1、在js中{  }中的块级语句没有独立的作用域

var i = 5;for(; i < 8; i++){ console.log(i); } //输出 5 6 7
//全局设置的变量i在for条件中也能拿到
if(true){ var a = 5; } console.log(a);    //输出5
//if条件中设置的变量a在全局中也能拿到

2、函数中是有作用域的,函数内的变量在函数外不能被访问

function f1(){ var x = 7; } f1(); console.log(typeof x);
//输出undefined

3、函数中用连等定义变量,除第一个变量外其他变量都是全局作用域,若需要定义多个变量建议使用逗号

function f1(){ var x = y = 6; } f1(); console.log(typeof y);console.log(typeof x);
//输出 number undefined
function f1(){ var x,y = 6; } f1(); console.log(typeof y);console.log(typeof x);
//输出undefined undefined

4、函数声明和函数表达式

函数声明:function fun(){  }函数声明会被预先处理,所以可以在之前调用。

fun();function fun(){ console.log("say hello!"); }
//输出 say hello!

函数表达式:var fun = function(){  }函数表达式不能被预先处理,所以不能在赋值前调用

fun(); var fun = function(){ console.log("say hello!"); }

//报错: fun is not a function

 

posted on 2016-08-03 00:12  MirageFireFox  阅读(132)  评论(0编辑  收藏  举报