0 0

javascript 局部变量输出undefined?5

请问下面的函数 a 输出什么?  为什么是这个值?
var i = 3;
function a(){
	alert("i = " + i);
	var i = 5;	
}
a();
2013年5月21日 23:18

4个答案 按时间排序 按投票排序

1 0

采纳的答案

var i = 3;
function a(){
alert("i = " + i);
var i = 5;
}
a();

因为javascript的变量提前声明特性 即如上代码等价于

var i = 3;
function a(){
        var i;
alert("i = " + i); //此时就是undefined了
i = 5;
}
a();


说白了 变量声明都会在函数开头完成 不管你怎么写的

2013年5月22日 07:37
0 0

undefined,说白了就是javascript解析器智障了,良好的编程习惯根本不会出现这种问题

2013年10月15日 09:52
0 0

这是因为javascript 内部变量和外部便量名字相同时,内部变量的级别高与外部变量的级别。再根据javascript的变量声明的hoisting机制,变量声明永远都会被提升至作用域的最顶端,所以alert 才会有一个undefined.

2013年5月22日 12:46
0 0

js是有个预编译的过程的,请参考这个http://smiky.iteye.com/admin/blogs/1564549

2013年5月22日 08:30

相关推荐

    浅谈JavaScript的全局变量与局部变量

    一、JavaScript scope 的划分标准是function函数块,不是以 if、while、for来划分的 [removed] function f1(){ alert("before for scope:"+i); //i未赋值(并不是没有声明!使用未声明变量或函数会导致...

    JavaScript实例精通 源代码

    1_2.htm 局部变量和全局变量。 1_3.htm JavaScript中的强制类型转换。 1_4.htm 在HTML中为JavaScript传递变量。 1_5.htm 在HTML中引用JavaScript的变量。 1_6.htm 比较undefined和"undefined"。 第2章(\2) 示例...

    javascript中错误使用var造成undefined

    在javascript中根据变量作用的范围不同分为局部变量和全局变量,直接定义的变量是全局变量,全局变量可以被所有的脚本访问;在函数中定义的变量是局部变量,局部变量只在函数内有效。 如果全局变量和局部变量使用...

    javascript初级代码学习.zip

    001-HTML中嵌入JavaScript代码的第一种方式 ...007-JS的局部变量和全局变量 007-JS的局部变量和全局变量 008-JS中的数据类型 014-null NaN undefined这三个值有什么区别 015-JS的常用事件-注册事件的两种方式

    JavaScript基础面试题_62题.pdf_前端面试题

    凡是定义在方法中的都是局部变量(方法外的是全局变量),for循环内部定义的也是局部变量,是先加载函数才能进行局部变量的定义,所以方法先进栈,然后再定义变量,变量有自己的作用域,一旦离开作用域,变量就会被...

    深入理解JS中的变量及作用域、undefined与null

    javascript中,变量主要分为局部变量和全局变量两种,对应的作用域也是局部作用域和全局作用域。 1 局部变量和作用域 局部变量一般在函数体内部声明使用: function func(){ var i=12;//局部变量 ...... } 局部...

    关于JavaScript中var声明变量作用域的推断

    输出结果: undefined,undefined 3,3 3,3 3 如果你是搞c、java等语言的,可能你会不解,为何j、k这种局部变量可以被作用域外的代码访问呢? 如果JavaScript中用var声明的变量可视为局部变量,那么能访问到这个变量...

    JavaScript入门实例源码案例

    局部变量会在函数运行以后被删除,而全局变量会在页面关闭后被删除。 2.1.5 运算符 JavaScript的运算符包括一元运算符、算数运算符、比较运算符、逻辑运算符、赋值运算符等。一元运算符只有一个运算数的运算符,...

    浅谈JavaScript中的作用域和闭包问题

    函数内部可以声明和访问全局变量,也可以声明局部变量(使用var关键字,函数的参数也是局部变量),但函数外部无法访问内部的局部变量: function test() { var a = 0; // 局部变量 b = 1; // 全局变量 } a = ?, b...

    JavaScript权威指南(第6版)中文版pdf+源代码

     11.2 常量和局部变量271  11.3 解构赋值274  11.4 迭代276  11.5 函数简写285  11.6 多catch 从句285  11.7 E4X: ECMAScript for XML286  第12章 服务器端JavaScript290  12.1 用Rhino脚本化Java291  12.2...

    JavaScript权威指南(第6版)

    11.2 常量和局部变量 11.3 解构赋值 11.4 迭代 11.5 函数简写 11.6 多catch 从句 11.7 E4X: ECMAScript for XML 第12章 服务器端JavaScript 12.1 用Rhino脚本化Java 12.2 用Node实现异步I/O 第二部分 客户端...

    JavaScript权威指南(第6版)(附源码)

    11.2 常量和局部变量 11.3 解构赋值 11.4 迭代 11.5 函数简写 11.6 多catch 从句 11.7 E4X: ECMAScript for XML 第12章 服务器端JavaScript 12.1 用Rhino脚本化Java 12.2 用Node实现异步I/O 第二部分 客户端...

    JavaScript权威指南(第6版)中文文字版

    11.2 常量和局部变量 271 11.3 解构赋值 274 11.4 迭代 276 11.5 函数简写 285 11.6 多catch 从句 285 11.7 e4x: ecmascript for xml 286 第12章 服务器端javascript 290 12.1 用rhino脚本化java 291 12.2 用node...

    JavaScript权威指南(第6版)(中文版)

    11.2 常量和局部变量 11.3 解构赋值 11.4 迭代 11.5 函数简写 11.6 多catch 从句 11.7 E4X: ECMAScript for XML 第12章 服务器端JavaScript 12.1 用Rhino脚本化Java 12.2 用Node实现异步I/O 第二部分 客户端...

    JavaScript 权威指南(第四版).pdf

     11.2 常量和局部变量271  11.3 解构赋值274  11.4 迭代276  11.5 函数简写285  11.6 多catch 从句285  11.7 E4X: ECMAScript for XML286  第12章 服务器端JavaScript290  12.1 用Rhino脚本化Java291  12.2...

    JavaScript笔记知识点整理图文.pdf

    * JavaScript中的数据类型包括:Number、String、Boolean、Array、Object、Null、Undefined等。 三、JavaScript运算符 * 赋值运算符:=、+=、-=、\*=、/=、%=、、>>=、>>>=、&=、^=、|=、&&=、||= * 比较运算符:==...

    源文件程序天下JAVASCRIPT实例自学手册

    源文件程序天下JAVASCRIPT实例自学手册 第1章 JavaScript语言概述 1.1 JavaScript是什么 1.1.1 JavaScript简史 1.1.2 JavaScript有何特点 1.2 JavaScript能做什么 1.2.1 表单数据合法性验证 1.2.2 页面特效 1.2.3 ...

    《JavaScript实例精通》[源代码]

    1_2.htm 局部变量和全局变量。 1_3.htm JavaScript中的强制类型转换。 1_4.htm 在HTML中为JavaScript传递变量。 1_5.htm 在HTML中引用JavaScript的变量。 1_6.htm 比较undefined和"undefined"。 第2章(\...

    Javascript基础笔记

    * 局部变量:在函数或块级作用域中声明的变量。 * 作用域链:JavaScript 的作用域链机制。 对象 * 对象的创建:使用对象字面量、new Object() 等方式创建对象。 * 对象的属性:包括对象的数据属性和访问器属性。 *...

Global site tag (gtag.js) - Google Analytics