浅谈Javascript变量作用域问题
Js中的变量作用域问题:
1、没有块级作用域。Js中的变量作用域不是以{}为界的,不像C/C++/Java。
如:
if(true){
var name = "qqyumidi";
}
alert(name); // 结果:qqyumidi
Js会将在if中定义的变量添加到当前的执行环境中,尤其在使用for循环时需要注意与其他语言的差异。
for(var i=0; i<10; i++){
;
}
alert(i); // 结果:10
这里仅仅是个人的理解,如有纰漏,还请大家告之。
相关推荐
-
js 作用域和变量详解
一.说起变量的提升呢,首先我们先看一段简单的代码 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script> var v = 'hello world'; alert(v); </script&
-
js函数内变量的作用域分析
本文实例分析了js函数内变量的作用域.分享给大家供大家参考.具体分析如下: 先看一个函数实例: 复制代码 代码如下: <html> <head> </head> <body> <script type="text/javascript"> var a = 5; var c = 3; function t(){ var a = 6; var b = 10; document.write(a+'-----'+b); doc
-
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
函数表达式 1.JavaScript中定义函数有2钟方法: 1-1.函数声明: 复制代码 代码如下: function funcName(arg1,arg2,arg3){ //函数体} ①name属性:可读取函数名.非标准,浏览器支持:FF.Chrome.safari.Opera. ②函数声明提升:指执行代码之前会先读取函数声明.即函数调用可置于函数声明之前. 1-2.函数表达式: 复制代码 代码如下: var funcName = function(arg1,arg2,arg3){ //函
-
Angularjs全局变量被作用域监听的正确姿势
如果你只想知道结论: $scope.$watch($rootScope.xxx,function(newVal,oldVal){ //do something }) 马上就有人问为什么不是: $rootScope.$watch("xxx",function(newVal,oldVal){ //do something }) 从我最近的一个bug来说说为什么要用第一种方式. 逻辑如图,一开始我使用了 $rootScope.$watch 的写法.因为 angularjs 在 $rootSc
-
JS中作用域和变量提升(hoisting)的深入理解
作用域(Scoping) 对于Javascript初学者来说,一个最迷惑的地方就是作用域:事实上,不光是初学者.我就见过一些有经验的javascript程序员,但他们对scope理解不深.javascript作用域之所以迷惑,是因为它程序语法本身长的像C家族的语言.我对作用域的理解是只会对某个范围产生作用,而不会对外产生影响的封闭空间.在这样的一些空间里,外部不能访问内部变量,但内部可以访问外部变量. c语言的变量分为全局变量和局部变量,全局变量的作用范围是任何文件和函数访问(当然,对于非变量定
-
JS变量及其作用域
1. 变量及其作用域:变量分为"全局变量"和"局部变量","全局变量"申明在函数外部,可供所有函数使用,而"局部变量"申明在函数体内部,只能在定义该变量的函数体内使用. (备注:在申明变量时没有var关键字,而是直接赋值的变量均为全局变量) <script type="text/javascript"> function main() { n = 10;//这里的n为全局变量,可以被外部直接使用
-
js变量、作用域及内存详解
基本类型值有:undefined,NUll,Boolean,Number和String,这些类型分别在内存中占有固定的大小空间,他们的值保存在栈空间,我们通过按值来访问的. (1)值类型:数值.布尔值.null.undefined. (2)引用类型:对象.数组.函数. 如果赋值的是引用类型的值,则必须在堆内存中为这个值分配空间.由于这种值的大小不固定(对象有很多属性和方法),因此不能把他们保存到栈内存中.但内存地址大小是固定的,因此可以将内存地址保存在栈内存中. <script type="
-
JavaScript的变量作用域深入理解
在学习JavaScript的变量作用域之前,我们应当明确几点: a.JavaScript的变量作用域是基于其特有的作用域链的. b.JavaScript没有块级作用域. c.函数中声明的变量在整个函数中都有定义. 1.JavaScript的作用域链 首先看下下面这段代码: 复制代码 代码如下: <script type="text/javascript" language="javascript"> var rain = 1; function rain
-
js变量以及其作用域详解
一.变量的类型 Javascript和Java.C这些语言不同,它是一种无类型.弱检测的语言.它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量.例如: 复制代码 代码如下: i=100;//Number类型 i="variable";//String类型 i={x:4};//Object类型 i=[1,2,3];//Array类型 JS的这种特性虽然让我们的编码更加灵活,但也带来了一个弊端,不利于Debug,编译器的弱检测让我们维护冗长的
-
关于javascript 回调函数中变量作用域的讨论
1.背景 Javascript中的回调函数,相信大家都不陌生,最明显的例子是做Ajax请求时,提供的回调函数, 实际上DOM节点的事件处理方法(onclick,ondblclick等)也是回调函数. 在使用DWR的时候,回调函数可以作为第一个或者最后一个参数出现,如: JScript code function callBack(result){ } myDwrService.doSomething(param1,param2,callBack);//DWR的推荐方式 //或者 myDwrSer
随机推荐
- 用vbs实现的简单的服务器文件备份办法压缩文件名自动按日期命名
- 在MySQL中删除表的操作教程
- 关于vue.js弹窗组件的知识点总结
- 深入解析Java的Servlet过滤器的原理及其应用
- 微信小程序 wxapp画布 canvas详细介绍
- .net采用ajax实现邮箱注册和地区选择实例
- php截取字符串函数分享
- PHP中数组合并的两种方法及区别介绍
- ThinkPHP打开验证码页面显示乱码的解决方法
- thinkphp制作404跳转页的简单实现方法
- 常用C#正则表达式汇总介绍
- php下将多个数组合并成一个数组的方法与实例代码
- 十分钟内学会 避免用户刷新导致重复POST提交
- JavaScript选取(picking)和反选(rejecting)对象的属性方法
- SQL order by ID desc/asc加一个排序的字段解决查询慢问题
- jquery购物车结算功能实现方法
- jQuery点击后一组图片左右滑动的实现代码
- 禁用Enter键表单自动提交实现代码
- js浮点数精确计算(加、减、乘、除)
- IE:重新安置临时文件夹
