JavaScript作用域之没有块级作用域
与C、C++以及JAVA不同,Javscript没有块级作用域。函数中声明的所有变量,无论是在哪里声明的,在整个函数中它们都是有定义的。
上例子
例子一、下面代码中,变量i、j和k和作用域是相同的,它们三个在整个函数中都有定义。
<script>
function test(o){
var i=0;
if(typeof o == "object"){
var j=0;
for(var k=0; k<10; k++){
document.writeln("k="+k);
}
document.writeln("k2="+k);
}
document.writeln("j="+j);
}
test(new String("pppp"));
</script>
输出结果为:k=0
k=1
k=2
k=3
k=4
k=5
k=6
k=7
k=8
k=9
+++k=10
j=0
这一规则可以产生惊人的结果,上代码
<script>
var scope="global";
function f(){
alert(scope);
var scope="local";
alert(scope);
}
f();
</script>
结果:第一个alert输出:underfined而不是global,第二个alert输出local
上面函数f与下面的函数等价:
function f(){
var scope;
alert(scope);
var scope="local";
alert(scope);
}
如果你写成:
<script>
var scope="global";
function f(){
alert(scope);
var scope2="local";
alert(scope2);
}
f();
</script>
输出结果为:第一个alert为global,第二个为:local.
分享到:
相关推荐
javascript的作用域和块级作用域概念理解.doc
相比之下,JavaScript并没有原生的块级作用域,如下例所示: ```javascript function test() { for (var i = 0; i ; i++) {} alert(i); // 输出 "3" } test(); ``` 尽管`i`是在`for`循环内部定义的,但它在整个`...
JavaScript 没有块级作用域,而是基于函数作用域和全局作用域的。 首先,看看 JavaScript 的作用域链是如何工作的。JavaScript 首先在当前作用域中查找变量,如果没有定义,则会继续查找上一层作用域,直到找到...
JavaScript 是一种广泛使用的编程语言,它在早期版本中没有实现块级作用域(block scope),这是它与其他许多编程语言的一个显著区别。在 JavaScript 中,变量的作用域是由函数定义的,即使在块级结构比如循环或条件...
JavaScript应用实例-js块级作用域.js
b、JavaScript没有块级作用域。 c、函数中声明的变量在整个函数中都有定义。 javascript的变量作用域,与平时使用的类C语言不同,例如C#中的代码: static void Main(string[] args) { if(true) { int number=...
JavaScript作用域是编程中至关重要的...在实际编程中,我们还会遇到闭包、块级作用域(ES6中的`let`和`const`)等更高级的概念,这些都是基于作用域链的扩展,理解它们对于成为精通JavaScript的开发者来说必不可少。
在ES6之前,JavaScript没有块级作用域,但if语句和for语句中的var声明的变量仍然有函数作用域或全局作用域。 四、函数作用域 函数作用域通常与局部作用域相重叠,但指的是通过函数定义的方式(使用function关键字或...
JavaScript作用域是编程中至关重要的概念,它定义了变量、函数和对象的可见性和生命周期。在JavaScript中,作用域主要分为两种类型:全局作用域和局部作用域。此外,随着ES6的引入,块级作用域和函数作用域也变得...
JavaScript作用域是编程中至关重要的概念,尤其是在JavaScript这种动态类型的脚本语言中。它规定了变量、函数以及其它标识符的可见性和生命周期,是代码组织和管理的关键元素。本资料"深入理解JavaScript作用域共12...
不同于Java或C#,JavaScript并没有块级作用域,这意味着在JavaScript中,大括号`{}`并不创建新的作用域。因此,变量在函数内部声明(使用`var`关键字)时,即使在`if`、`for`或`while`等控制结构内声明,它们在整个...
在ES5版本的JavaScript中,确实没有块级作用域,只有函数作用域和全局作用域。这使得闭包在JavaScript中扮演了至关重要的角色。 闭包的基本概念是,当一个函数内部定义了另一个函数时,内部函数可以访问外部函数的...
在JavaScript中,变量的作用域分为全局作用域和函数作用域,但没有块级作用域。这意味着在`for`循环或其他块语句(如`if`、`else`)中定义的变量实际上是在包含它们的函数作用域内创建的,而不是仅限于那个块。这...
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今天这篇文章对JavaScript作用域示例详解的介绍,希望能帮助大家更好的学习JavaScript。 任何程序设计...
在JavaScript中没有块级作用域(block scope)的概念,通常变量声明在函数作用域(function scope)中。这意味着,如果你在JavaScript中的块级语句(如if或for语句)里声明一个变量,那么这个变量实际上是在包含它的...
接着讨论了 JavaScript 中的全局作用域、局部作用域、块级作用域和函数作用域,特别是闭包的概念。随后,文章探讨了函数的高级用法,如递归函数、高阶函数和立即执行函数表达式(IIFE)。最后,通过实际应用示例,如...