`
gteam.yu
  • 浏览: 27770 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

JavaScript 学习记录一(JavaScript没有块级作用域)

阅读更多
   与一般的开发语言如 C++、Java不同,JavaScript没有块级作用域。也就是说函数中声明的所有变量,无论是在哪里声明的,在整个函数中它们都是有定义的。例如下面的代码中i、j、k的作用域是相同的。
function test(o){
  var i = 0;
  if(typeof(o) == 'object'){
    var j = 0;
    for(var k = 0; k < 10; k++){
      document.write(k);
    }
    document.write(k);
  }
  document.write(j);
}

   也正是由于这个规则,下面的代码将输出不一样的结果。
var scope = 'global';
function f(){
  alert(scope);
  var scope = 'local';
  alert(scope);
}
f();

   上面的代码就等价于
var scope = 'global';
function f(){
  var scope;
  alert(scope);
  scope = 'local';
  alert(scope);
}
f();

最后补充一点,如果没有为var声明的变量指定一个初始值,那么在这个变量被赋值之前,它的初始值就是undefined。
0
2
分享到:
评论

相关推荐

    为什么JavaScript没有块级作用域

    JavaScript 是一种广泛使用的编程语言,它在早期版本中没有实现块级作用域(block scope),这是它与其他许多编程语言的一个显著区别。在 JavaScript 中,变量的作用域是由函数定义的,即使在块级结构比如循环或条件...

    Javascript中的作用域及块级作用域

    b、JavaScript没有块级作用域。 c、函数中声明的变量在整个函数中都有定义。  javascript的变量作用域,与平时使用的类C语言不同,例如C#中的代码: static void Main(string[] args) { if(true) { int number=...

    JavaScript的作用域和块级作用域概念理解

    JavaScript的作用域和块级作用域是理解JS变量可见性和生命周期的关键概念。首先,我们要区分块级作用域和函数作用域。 1. **块级作用域**:在大多数编程语言中,如C,一对花括号(`{}`)定义了一个代码块,其中声明...

    javascript变量作用域

    JavaScript 没有块级作用域,而是基于函数作用域和全局作用域的。 首先,看看 JavaScript 的作用域链是如何工作的。JavaScript 首先在当前作用域中查找变量,如果没有定义,则会继续查找上一层作用域,直到找到...

    JavaScript应用实例-js块级作用域.js

    JavaScript应用实例-js块级作用域.js

    JavaScript使用闭包模仿块级作用域操作示例

    在JavaScript中,变量的作用域分为全局作用域和函数作用域,但没有块级作用域。这意味着在`for`循环或其他块语句(如`if`、`else`)中定义的变量实际上是在包含它们的函数作用域内创建的,而不是仅限于那个块。这...

    深入理解ES6学习笔记之块级作用域绑定

    1. **块级作用域绑定:** 在ES6之前,JavaScript只有函数作用域,而没有块级作用域。这意味着变量在函数内部定义,而非在代码块(如if、for、while等)内定义。ES6引入了let和const关键字,实现了块级作用域,使得...

    js代码-es5块级作用域实现

    在ES5时代,JavaScript只有两种作用域:全局作用域和函数作用域,而没有块级作用域。这导致了一些问题,比如变量提升(hoisting)和意外的变量共享,使得代码管理变得复杂。本文将详细介绍如何在ES5中模拟实现块级...

    JavaScript学习(一)

    let和const的引入解决了var在块级作用域的问题,防止了意外的变量提升。 5. **事件与DOM操作**:JavaScript与HTML的交互主要通过事件和DOM(文档对象模型)。事件是用户与页面交互时触发的,如点击、滚动等,可以...

    解析JavaScript模仿块级作用域

    JavaScript 语言本身并不支持真正的块级作用域,这意味着在大括号({})内定义的变量在该块外部依然可以访问。然而,为了实现类似的作用域限制,开发者常常使用某些技巧来模拟块级作用域,其中最常用的是匿名函数和...

    09-块级作用域:var缺陷以及为什么要引入let和const?_For_vip_user_0011

    理解变量提升和块级作用域对于深入学习JavaScript至关重要,因为这两个机制在实际开发中会同时存在。熟悉`let`和`const`的用法,可以帮助开发者编写更清晰、更安全的代码,避免因变量提升而引发的错误。 总结一下,...

    ECMAScript6块级作用域及新变量声明(let)

    在ES5之前,JavaScript只有一种全局作用域和函数作用域,而没有块级作用域,这在某些情况下会导致变量管理的复杂性。 **块级作用域(Block Scope)** 块级作用域是指变量的作用范围限制在其所在的代码块内,如`if`...

    JavaScript作用域原理

    ES6引入了let和const关键字,这使得JavaScript支持块级作用域。在代码块(如if、for、while等)内声明的变量只在该块内有效,这与var声明的变量不同,var会提升到其所在函数的作用域顶部,导致可能的意外行为。 ...

    深入理解JavaScript作用域和作用域链

    JavaScript作用域是编程中至关重要的...在实际编程中,我们还会遇到闭包、块级作用域(ES6中的`let`和`const`)等更高级的概念,这些都是基于作用域链的扩展,理解它们对于成为精通JavaScript的开发者来说必不可少。

    通过函数作用域和块级作用域看javascript的作用域链

    在JavaScript中,主要有两种类型的作用域:函数作用域和块级作用域。 函数作用域是JavaScript在ES6之前唯一提供的作用域类型。在函数作用域中,变量在函数内部定义,只能在该函数内部访问。例如: ```javascript ...

Global site tag (gtag.js) - Google Analytics