不一样。你可以放入一个function内,然后进行测试。没有var声明的变量,全都是全局的。如下:// ① 定义没有var声明的变量
function noVar() {
for (i = 0; i < 10; i++) {}
}
// 执行
noVar();
// 调用i值
console.log(i);
// 输出10,即证明在noVar方法外面可以访问到i,所以i为全局
// ② 定义带有var声明的变量,同理,结果访问i,报"i is not definec"异常,即未定义变量。以下写法一样// ① 声明与初始化在for外部
// 推荐写法,因为javascript的for、while、switch都没有局部变量,所以将初始化声明放置外面,提高阅读性。
var i = 0;
for (; i < 10; i++) {}
// ② 声明在外部,初始化在内部
var i; // 或初始化,for里面重置,原理一样
for (i = 0; i < 10; i++) {}
// ③ 声明与初始化都在内部
for (var i = 0; i < 10; i++) {}