`
WODE890502
  • 浏览: 10150 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论

js变量初始化声明

 
阅读更多
就是js可以不声明就给初始化,那样就是一个全局变量了
如i=1;i就是一个全局变量,这样方便程序员写很长的代码时又要跳到开头声明个全局变量,就直接在使用的地方用i=1;(其实这样代码不大很看,不方面阅读)
正常写法是var i;你可以重复声明并初始化一个变量,效果只不过是重新赋值。
变量的作用域:

与其他高级语言一样,js分全局变量和局部变量。所谓局部就是函数内的变量。局部变量的优先级比全局高,因为我的地盘我做主。切记局部变量声明要用var。不用var的结果就是之前说的蛋疼玩意。



再次强调声明变量要用var,否则在函数操作变量的时候如果使用了全局变量就会有改变程序的其他部分所使用的值的危险。



js没有块级作用域。大概是比如一个if(){块级作用域}。这与C、C++、JAVA不同。

因此在一个函数中声明的变量在整个函数中都是有定义的。参看如下代码:

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);

}

在java中,这样的代码会报错,因为for循环外面 的两个语句对k和j的访问都会出错。但是在js中不会。即使你在if(){}中声明了变量,但是在整个函数里,这个被声明的变量都是可见的。不过如果在{}外面,那么这个访问变量它的值会是undefined。如果我们再添一行test(1); 这段代码在浏览器里的结果是undefined。

注意:未定义的话js不会报错,因为默认值是undefined。而未声明的话会代码报错无法执行。



再来一个例子:

var scope='global';

function f() {


alert(scope);

var scope='local';

alert(scope);

}

f();

它的结果会让你大吃一斤。因为它的结果跟如下代码没有区别:

function f () {


var scope;

alert(scope);

scope='local';

alert(scope);

}

这两个例子说明了为什么将所有变量声明集中起来放置在函数的开头是个好的编程习惯。我觉得还得加一条,最好别搞什么同名变量。否则如果js理论不是很精通的话很容易出现一些让人匪夷所思的问题。比如这个例子



顺便说一下,js的变量与对象里的属性基本上是一样的。


分享到:
评论

相关推荐

    浅谈js中变量初始化

    在JavaScript中,变量初始化是一个重要的概念,指的是在变量被使用之前为其赋予一个初始值。JavaScript 是一种弱类型语言,意味着变量在声明时不一定要指定数据类型,而且在使用时也不需要初始化。然而,不进行初始...

    学习java静态数据初始化.doc

    隐式初始化指的是在静态变量声明时赋值,例如 `static int x = 10;`。显式初始化指的是在静态代码块中赋值,例如 `static { x = 10; }`。 在 Java 中,静态变量的初始化顺序是按照它们在类中的定义顺序进行的。如果...

    js判断变量初始化的三种形式及推荐用的形式

    在JavaScript编程中,变量初始化是基本操作之一,指的是在使用变量之前为变量赋予一个初始值的过程。正确的变量初始化对于程序的稳定性和正确性至关重要。在JavaScript中,变量的初始化有多种方式,而判断一个变量...

    JavaScript程序设计课件:变量.pptx

    在JavaScript中,声明和初始化一个变量的语法如下: ```javascript var 变量名 = 值; ``` - `var` 是一个关键词,用于告诉JavaScript我们要声明一个变量。在ES6及以后的版本中,还有另外两种声明变量的方式:`let`...

    JavaScript变量

    - **非强制初始化**:与Java等静态类型语言不同,JavaScript中的变量可以在声明时不进行初始化。 ```javascript var test; // 声明但未初始化 ``` - **变量提升**:即使变量在使用前没有显式声明,JavaScript也...

    Javascript 中的即时函数和初始化分支

    本文将深入探讨两个重要的JavaScript概念——即时函数(Immediate Function)和初始化分支(Init-time Branching)。理解并熟练运用这两个概念,能够帮助开发者编写更高效、更模块化的代码。 ### 即时函数 ...

    js变量利用ajax转php变量

    - **初始化请求**:设置请求方法(GET或POST)、URL、是否异步以及额外的HTTP头信息。 - **发送请求**:调用`send()`方法,如果是POST请求,可以将JS变量的数据作为参数传入。 - **监听状态变化**:通过`...

    js二维数组定义和初始化的三种方法总结

    // 这里将变量初始化,这边统一初始化为空,后面在用所需的值覆盖里面的值 } } ``` 通过上述步骤,可以根据实际需求动态地创建二维数组。初始化的值可以根据实际需要进行填充。 方法三介绍了如何使用已知的几个...

    深入理解JavaScript系列(12) 变量对象(Variable Object)

    最后,JavaScript在处理变量对象时,会有一套变量初始化规则,这些规则定义了变量对象中的各种条目是如何被添加和初始化的。例如,在函数上下文中,参数首先被初始化,然后是函数声明,最后是变量声明。 通过理解...

    const-eval-init.rar_The Test

    尽管通常在Java中我们不会遇到.js文件(JavaScript文件),但根据上下文,这可能是为了模拟某种测试环境,比如使用JavaScript引擎来运行或测试Java代码片段,或者是用JavaScript实现的一个与Java const变量初始化...

    Web前端开发技术-认识JavaScript变量.pptx

    声明变量通常使用`var`关键字,可以分为两种方式:单独声明和初始化。单独声明变量,如`var age;`,之后再赋值,如`age = 10;`;而初始化变量则在声明时就赋予初始值,如`var myName = '小明';`。 在实际应用中,...

    javascript变量声明实例分析

    如果重复声明的变量包含初始化值,则与普通的赋值操作无异。但如果变量已经使用var声明并赋值,再次使用var声明且没有赋值操作,这个变量的值仍然是它之前的值,不会被重置为undefined。 4. 在JavaScript中,函数...

    C++变量的使用与意义.md

    下面是一个完整的示例程序,展示了如何声明、初始化、输出一个整数类型的变量 `age`: ```cpp #include using namespace std; int main() { // 变量的声明与初始化 int age = 25; // 输出变量的值 cout 年龄...

    js变量与运算符PPT学习教案.pptx

    同时,也可以在声明时初始化变量,如`var a = 10;`。可以一次声明多个变量,例如`var x, y, z = 10;`。变量名应遵循一定的命名规则:不能包含特殊字符,如!,$,#,.%等;不能以数字开头;也不能使用JavaScript的保留...

    JavaScript 43 道面试题及答案.docx

    2. 初始化变量,将变量初始化为 undefined 3. 真正赋值 事件执行机制 在 JavaScript 中,setTimeout 函数真正被执行时,循环已经走完。因此,在使用 var 声明的变量时,值将是全局的,在循环期间,每次使用一元...

    JS全局变量和局部变量最新解析

    在JavaScript中,使用`var`声明的变量被视为局部变量,如果在函数内部声明,它将只在该函数的作用域内生效。例如,在`GodDamnTest1`的例子中,`var a = 123;`在`Foo`函数内部声明,因此它是一个局部变量,只能在`Foo...

    js-作用域-变量申明提升 - 甘劭 - 博客园1

    // 变量声明提升,但未初始化 var a = 1; ``` 这里要注意的是,`var`声明的变量会提升到其所在的作用域顶部,而不是最近的代码块。在ES6引入的`let`和`const`关键字声明的变量则不会提升,而是遵循“暂时性死区”...

    简单掌握JavaScript中const声明常量与变量的用法

    const和let的一个重要区别是,let声明的变量存在暂时性死区(temporal dead zone),即变量在声明之前是不可访问的,而const由于必须声明同时初始化,因此也存在暂时性死区。使用let关键字声明变量的语法与const类似...

Global site tag (gtag.js) - Google Analytics