<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<script type="text/javascript">
var v1, v2;
v1=10;
v2=20;
function a(){
var v2, v3;
alert("v1= "+v1+"\r\nv2 ="+v2+"\r\nv3 = "+v3);
v2=v3=40;
function b(v3, v4){
alert("v3="+v3+"\r\nv4="+v4);
v2=v3=80;
}
b(v3);
alert("v2="+v2+"\r\nv3="+v3);
alert(v4);
}
a();
</script>
</head>
<body style="overflow: auto;">
</body>
</html>
为什么在最后显示的提示框里v2=80,而v3却=40呢?
本人是新手,是书本内容来的,就是不懂才放上去问的,望指教
追答如果这个例子在书本里作为反面例子,那无可厚非;如果这个例子作为正面例子让你去理解和阅读,那我老实告诉你,这种书还是早点放下,以免影响你后面学习程序的思维。
这种例子有点故弄玄虚,浪费人的时间。
function a(){
var v2, v3;
alert("v1= "+v1+"\r\nv2 ="+v2+"\r\nv3 = "+v3);
v2=v3=40;
}
正规的编辑器都会告诉你,v2重复定义,将出现不可预知的结果。
菜鸟求助:js中作用域的问题
变量的作用域通过作用域链来管理,类似于原型链。作用域链是一层一层往上查找的机制。内部作用域(如函数内定义的变量)优先级高于外部作用域。例如,当你在函数中声明一个变量s,其值为10,当你调用alert(s)时,会输出10,因为在这个作用域中已经存在了一个s,所以不会去查找外部作用域。当函数中...
js关于作用域的问题
首先说一下js全局变量的作用域:在js中如果直接定义一个变量,都是在window这个作用域下定义的 比如 var num = 60 也可以写成这样 window.num = 60 这两个写法是完全一样的,不管哪种写法,使用 console.log(num, window.num) 都可以打印出来 num的值 相对于题主的这个例子:函数内部声明一个局...
js变量修改了但是拿到的还是没改前的
1. 变量作用域问题:变量的作用域会影响变量的访问。如果变量被定义在函数内部,那么在函数外部就无法访问该变量,也就无法拿到该变量的值。此时,可以将变量定义在全局作用域中,从而保证变量的可访问性。2. 变量赋值问题:如果变量被重新赋值,但是拿到的却是原始值,可能是因为赋值的方式不正确。在 Ja...
有关javascript的全局变量的问题,请问下面第一个输出s为什么结果是undefi...
js里面,函数作为作用域范围,在这个范围里,首先完成的过程是变量初始化和声明。也就是说,show1执行之前,内部变量已经初始化,初始化的值都是undefined。所以,第一write的s等于undefined。js的运行顺序 步骤1. 读入第一个代码段(js执行引擎并非一行一行地执行程序,而是一段一段地分析执行的)步骤2....
js的私有变量和作用域链的练习题求解答
首先 ,a[0]=100;这个时候的a是全局变量的a,当 a=[100]时,重新赋值了,a就是函数内的私有变量了,不是外面的全局变量了,所以 整个函数对全局变量a的操作只有 a[0]=100;所以最终结果是 100,34 传到函数内部的是一个引用对象,又不希望改变全局变量的值,就要重新赋予空间并且赋值 ...
浅析Js中const,let,var的区别及作用域
理解:let变量的作用域只能在当前函数中 早期的JavaScript中,声明变量只能使用var关键字定义变量,并没有定义常量的功能。通过var关键字定义的变量,其作用域只能函数级或是全局作用域,并没有块级作用域。ES6(ECMAScript 2015)对这一问题做了改善,增加了用于定义块级变量的let关键字和用于定义常量的...
如何更好的理解javascript变量类型以及变量作用域
变量作用域 任何程序语言中变量的作用域都是一个很关键的细节。JS中变量的作用域相对与JAVA、C这类语言显得更自由,一个很大的特征就是JS变量没有块级作用域,函数中的变量在整个函数都中有效,运行下面代码: <SCRIPT LANGUAGE="JavaScript" type="text\/javascript"> \/\/定义一个输出函数 function outP...
js立即执行函数,作用域问题
js分为全局作用域和函数作用域,全局作用域在函数内部可以访问到,但是函数内部的变量,外部无法访问到 var name = 'zhangsan';(function(){ console.log(name)\/\/这里因为变量提升,name === undefined,所以结果是undefined var name = 'lisi'console.log(name)\/\/这里执行的是 name = lisi ,所以自然...
Js基础27:作用域
函数和变量的有效范围就是作用域 1、作用域的概念 这是因为js中存在作用域的概念。作用域:作用域就是指定一个变量或者一个函数的作用范围。能在页面的任何位置都可以访问,称为 全局作用域 只能在局部(函数内)访问,称为为 局部作用域 上述代码中,a是全局变量,b是局部变量 ES5中只有函数才有...
前端:如何理解 JS 的作用域和作用域链?说说闭包的两个应用场景_百度知 ...
全局作用域就是最外层的作用域 ,如果我们写了很多行 JS 代码,变量定义都没有用函数包括,那么它们就全部都在全局作用域中。这样的坏处就是很容易撞车、冲突。这就是为何 jQuery、Zepto 等库的源码,所有的代码都会放在 (function(){...})() 中。因为放在里面的所有变量,都 不会被外泄和暴露 ,...