javascript 声明提前
来源:互联网 发布:windows性能监控 编辑:程序博客网 时间:2024/04/29 15:23
概念
像java和C等高级语言存在函数级变量和块变量,其有着不同的作用域,分别是函数级作用域,块作用域。如有全局变量出现在函数域或者块域中,其值会被覆盖。在javascript中不存在块变量作用域,在像if, for 等{}中的变量,其作用域就是函数作用域。由此会带出申明提前的概念。
分析
我们可以通过三个例子来分析这种现象:
1.正常情况
var scope = “global”;
function checkscope()
{
var scope ='local';
return scope;
}
checkscope() ; //=> local
2. 函数嵌套
var scope = “global”;
function checkscope()
{
var scope ='local';
function nestedscope()
{
var scope = 'nested';
return scope;
}
return nestedscope();
}
checkscope() ; //=> nested
3. 现象
function test(o)
{
var i=0
if(typeof o=='object')
{
var j = 0;
for(var k=0;k<10;k++)
{
console.log(k);
}
console.log(k); //输出 10
}
console.log(j); //输出 0
}
4. 申明提前
var scope = 'global'
function f()
{
console.log(scope); //输出 undefined 而不是 global
var scope = 'local'; //变量初始化
console.log(scope); //输出 local
}
5. 对比
var scope = 'global'
function f()
{
var scope;
console.log(scope); //输出 undefined 而不是 global
scope = 'local'; //变量初始化
console.log(scope); //输出 local
}
由代码4,5可以看出,
1. javascript的申明提前只是针对于申明,将申明提前至函数顶部,但是初始化的位置还是留在原来的位置。
2. javascript的全局变量其实是全局对象的一个属性,是ECMAScript强制规定的,可以通过this.来引用,但是没有办法来获取局部变量中存在的对象。
3. javascript程序员可以将所有函数体变量放在函数顶部,这样可以很清楚的知道真是变量的作用域,这也是作为javascript程序员的良好习惯。
- javascript 声明提前
- JavaScript的声明提前
- JavaScript提前声明
- JavaScript 变量声明提前
- javascript 声明提前
- JavaScript声明提前
- javascript变声声明提前
- javascript函数声明提前的一个例子
- JavaScript函数作用于之声明提前
- JavaScript函数作用域和声明提前
- 谈谈 JavaScript 中的 声明提前(hoisting)
- 声明提前
- JavaScript 中对变量和函数声明提前的示例
- javascript的变量及其作用域和提前声明
- JavaScript 函数和变量声明的"提前"(hoist)行为
- JavaScript中对变量和函数声明的提前
- javascript的函数作用域及声明提前
- JavaScript 中对变量和函数声明的“提前”
- windows创建进程的用户态和内核态交互----小话windows(1)
- 扩展欧几里得算法求一次同余方程的解(一个最小解的情况)
- delphi学习点滴(五)
- Coherence
- 《c语言深度剖析》整理--关键字 .
- javascript 声明提前
- HDU 1702 ACboy needs your help again!
- LPSTR、LPCSTR、LPTSTR和LPCTSTR的意义及区别
- Max Sum Plus Plus
- 解决CMFCMenuButton无法显示右边箭头以及多字节编码下堆破坏的问题
- IIS 7.5, Classic ASP and Access database
- 文本框相加运算
- [Uncle Bob Martin] Screaming Architecture
- 黄淮学院CSDN高校俱乐部巡讲