- 浏览: 58767 次
- 性别:
- 来自: 重庆
文章分类
最新评论
首先js是没有块级作用域的,这是和java,c#什么的最大的区别,也是很多时候会犯错的地方。
例如
for(var i=0;i<100;i++)
实际是
var i;
for(i=0;i<100;i++)
js的变量查找是以本函数内部最先查找,如果找不到就找上一级函数,找不到再往上,直到全局变量,且一旦在某个作用域找到就不会再往上查找,所以如果在函数内部定义了一个和全局变量相同名字的变量pa,那在本函数内部使用的所有pa变量都是本函数的变量,而不会影响到全局变量。如下代码
可以看到在函数内部给pa赋值后,全局函数的pa值是没有改变的。
另外函数作用域的嵌套关系是定义时候觉定,而不是嵌套的时候决定的,JavaScript的作用域是静态作用域,又叫词法作用域。例子如下
前一阵木有实践写错个东西,原来在java里也是可以在方法中使用和全局变量相同名字的局部变量,例如
如上,方法里在局部变量name未定义前是使用全局变量,但是定义之后,下面所有的name都会使用局部变量,不过,如果在name前加this,则还是会使用全局变量,另外,局部变量名字可以和全局变量一样,但是类型可以不一样。
当然,貌似基本没多少人这么用吧
例如
for(var i=0;i<100;i++)
实际是
var i;
for(i=0;i<100;i++)
js的变量查找是以本函数内部最先查找,如果找不到就找上一级函数,找不到再往上,直到全局变量,且一旦在某个作用域找到就不会再往上查找,所以如果在函数内部定义了一个和全局变量相同名字的变量pa,那在本函数内部使用的所有pa变量都是本函数的变量,而不会影响到全局变量。如下代码
var pa=100; function fn(){ alert(pa); //undefined pa=222; var pa=1000; alert(pa); //1000 } fn(); alert(pa);//100
可以看到在函数内部给pa赋值后,全局函数的pa值是没有改变的。
另外函数作用域的嵌套关系是定义时候觉定,而不是嵌套的时候决定的,JavaScript的作用域是静态作用域,又叫词法作用域。例子如下
function fn1(){ var scope=1; alert(scope); } fn1();//1 function fn2(){ var scope=2; (function(){ alert(scope); })(); } fn2();//2 function fn3(){ var scope=3; fn1(); } fn3();//1
前一阵木有实践写错个东西,原来在java里也是可以在方法中使用和全局变量相同名字的局部变量,例如
private String name="lili"; public String getName(){ System.out.println(name);//lili String name="yyyy"; System.out.println(this.name);//lili return name;//yyyy }
如上,方法里在局部变量name未定义前是使用全局变量,但是定义之后,下面所有的name都会使用局部变量,不过,如果在name前加this,则还是会使用全局变量,另外,局部变量名字可以和全局变量一样,但是类型可以不一样。
当然,貌似基本没多少人这么用吧
发表评论
-
js this
2013-10-24 16:06 562js里this是指向的调用的引用对象 function t ... -
JS变量随便写写
2013-10-21 11:54 792一般来说js全局变量分 ... -
js ++ --
2013-10-18 15:57 585前置++和--是马上执行运算 后置++和--简单点说就是当下一 ... -
关于闭包,自己理解的
2013-10-17 14:09 803其实一直没搞懂闭包啥 ... -
连续定义方法
2013-10-16 18:07 630var newFunc={}; var strs=" ... -
with
2013-10-16 14:38 516记录下,免得又忘记了 var defaultValue={ ... -
Myeclipse的jquery插件jqueryWTP安装
2013-10-12 22:05 780下载插件 jqueryWTP1.20foCN.jar 地址: ... -
aptana3安装jquery插件的两种方式
2013-10-12 11:29 1001总结了下貌似现在只有两种,其实都是用的同一个jquery开发插 ... -
jQuery的.bind()、.live()和.delegate()之间区别
2013-10-11 14:59 593原文:The Difference Between ... -
通过JS函数自动获取表单元素值的方法(转)
2013-09-16 17:26 997做ajax提交懒得组合字符串,在网上找有没自动获取表单方法,找 ... -
jquery小东西记录(3)-选择器,通配符等
2013-08-13 11:24 6081.选择器 (1)通配符: $("input ... -
javascript小东西记录
2013-07-05 17:45 697onload几种方式 window.onload=XXXX;( ... -
jquery小东西记录(2) --jquery和dom对象转换
2013-07-05 11:37 594jQuery对象转成DOM对象: 两种转换方式将一个jQue ... -
js简单的表格操作
2013-06-21 15:43 1166好久没写表格操作全忘了,看别人的看不懂,所以只有自己写个,没有 ... -
慢慢收集javascript的使用方法
2013-06-06 11:22 703子窗体改变父窗体值 parent.document.getEl ... -
jquery小东西记录(1)
2013-05-12 23:45 790$(function(){}); $(document).r ... -
select标签的操作
2010-05-20 15:33 925功能为:添加 批量添加 删除 选定后背景变色 删除后背景色变回 ... -
主副窗口传值
2009-07-14 17:19 866主窗体 <html> <head&g ... -
javascript:无聊时写的一个自动获取json值并自动生成表格,可设置表格的列标题与要表现json值的位置
2009-07-12 14:50 2142function test(){ var file ...
相关推荐
JavaScript作用域是编程中至关重要的概念,它规定了变量和函数的可见性及生命周期。JavaScript主要有两种作用域:全局作用域和局部作用域。 全局作用域是指在代码的任何位置都可以访问的变量或函数,这通常包括在最...
深化理解javascript作用域其次篇之词法作用域和动态作用域_ 深化理解javascript作用域其次篇之词法作用域和动态作用域,是javascript中非常重要的一部分。理解词法作用域和动态作用域对javascript的编程至关重要。...
JavaScript作用域是编程中至关重要的概念,它定义了变量、函数和对象的可见性和生命周期。在JavaScript中,作用域主要分为两种类型:全局作用域和局部作用域。此外,随着ES6的引入,块级作用域和函数作用域也变得...
JavaScript作用域是指在JavaScript代码中,变量、常量、对象和函数能够访问的范围。在编程中,变量和函数的使用都受到作用域的限制,决定了它们能够在哪些代码块中被引用。作用域有助于防止变量命名冲突,也使得程序...
JavaScript作用域是编程中至关重要的概念,尤其是在JavaScript这种动态类型的脚本语言中。它规定了变量、函数以及其它标识符的可见性和生命周期,是代码组织和管理的关键元素。本资料"深入理解JavaScript作用域共12...
JavaScript 作用域是编程中一个至关重要的概念,它规定了变量和函数的有效范围,即它们在哪里可以被访问和使用。理解作用域对于编写可维护和高效的代码至关重要。本文将深入探讨 JavaScript 的全局作用域和局部作用...
JavaScript作用域是编程中至关重要的概念,它规定了变量和函数的可见性和生命周期。了解JavaScript作用域对于编写高效、安全的代码至关重要。本篇将详细解释JavaScript作用域的几个核心特性,包括无块级作用域、函数...
讨论javascript作用域,很多人被javascript作用域搞迷糊了,这个应该有用。
JavaScript作用域原理是编程中的重要概念,它关乎变量的可见性、生命周期以及代码组织。本文将深入探讨JavaScript的作用域机制,特别是预编译的概念。在理解这些知识点之前,建议先回顾一下JavaScript的基础语法。 ...
### JavaScript作用域链(Scope Chain)初探 #### 一、引言 JavaScript的作用域链是一个重要的概念,尤其是在深入理解JavaScript执行机制时不可或缺的一部分。本文将通过对几个具体例子的分析来探讨JavaScript作用域...
JavaScript 变量作用域详解 JavaScript 变量作用域是基于其特有的作用域链的。在 JavaScript 中,变量作用域是指变量可以被访问和修改的范围。 JavaScript 没有块级作用域,而是基于函数作用域和全局作用域的。 ...
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望能帮助大家更好的学习JavaScript。任何程序...
JavaScript 执行环境和作用域的深层次理解 在 JavaScript 中,执行环境和作用域是两个非常重要和基本的概念,理解了这两个概念对于 JavaScript 中很多脚本的运行结果就能明白其中的道理了。执行环境是一个概念,一...
01JavaScript作用域.md
Javacript 中有一系列作用域的概念。对于新的JS的开发人员无法理解这些概念,甚至一些经验丰富的开发者也未必能。这篇文章主要目的帮助理解JavaScript中的一些概念如:scope,closure, this, namespace, function ...