javascript 与 jquery 变量作用域差异问题

/***javascript例子***/

function fn(){
var oo="oo";
function fnn(){
alert(oo);
}
fnn();
}

fn(); // 结果 undefined

/***jquery 例子***/

$(

function(){

var oo="oo";
function fnn(){
alert(oo);
}
fnn();
}
)
// 结果 oo

按我理解以上jquery 只是将 匿名函数 等待页面加载完成后才执行而已
整函数结构跟之前的javascript的函数应该是一样的
但是为什么 在jquery中 函数fnn可以获取到其外部的变量oo

0

2个回答

第一个也是oo,哪来的undefined。。楼主你运行过没有了。。

2
sadkilo
sadkilo function fn(){ var oo="oo"; function fnn(){ var oo="oo2"; alert(oo); } fnn(); alert(oo); } fn();
3 年多之前 回复

function fn(){
var oo="oo";
function fnn(){

alert(oo);
var oo="oo2";

}
fnn();
alert(oo);

}
fn();

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
jquery变量作用域的问题
[code=javascript]$(function()rn var $new=$(' sweeeeqwe未改变');rn $('button').click(function()rn rn $('body').append($new);rn )rnrn $new.children('span').on('click',function()rn $(this).text('改变');rn );rn )[/code]rnrn像我这样添加元素,点击'button'按钮只有第一次生效,这是因为作用域的问题吗,rn具体什么的有人能说说吗?
JavaScript变量作用域问题
今天写JavaScript页面时,遇到一个头疼的问题。大致如下: function a(){ var list=[]; function b(){ list.push("1"); } } 这时程序出错,提示list未定义,可是这个list不是在b的外面吗?如下定义才能正常运行 var list=[]; function a(){ function b(){ list.push(...
JavaScript遇到的变量作用域的问题
JavaScript变量作用域
javascript变量作用域的问题(困惑)
var Price = document.getElementById("txtPrice");rn function onPriceBlur() rn if (Price.value != "") rn if (Price.value.substr(0, 1) != "¥") rn var Price = document.getElementById("txtPrice");rn var strFuhao = "¥";rn Price.value = strFuhao + Price.value;rn rn rn rnrn上面定义的Price在函数中不能找到,希望兄弟姐妹们看看是咋回事???????
javascript变量作用域
首先了解: 什么是块级作用域呢? 任何一对花括号({和})中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的。 函数作用域:定义在函数中的参数和变量在函数外部是不可见的。 1.javascript是没有块级作用域的。函数是JavaScript中唯一拥有自身作用域的结构。 函数作用域 var scope="global";   func
Javascript变量作用域问题
[code=JScript]rn var size = 5;rn var lis = document.getElementById("size").getElementsByTagName("li");rn for(var i = 0 ; i < lis.length ; i++)rn rn lis[i].onclick = function()rn rn size = parseInt(this.innerHTML);rn rn rn[/code]rnrn[code=HTML]rn rn rn rn rn 5rn 7rn 9rn rn rn rn[/code]rnrn如何在点击列表项的时候将列表中的数字赋值给size变量?
javascript变量作用域问题
类型 js类型包括了基本类型跟引用类型 基本类型指简单的数据段而引用类型指那些可能由多个值构成的对象 l基本类型:undefined,null,boolean,number,string 这5种基本类型,基本类型可以操作保存在变量中的实际的值 l引用类型:引用类型的值是保存在内存中的对象,js不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间,在操作对象的时候,实际上是操作对象
javascript中变量作用域的问题
rnrn```rn rnrnrn rn 分享到rn rn rnrnrn rn rn rn 微信rn QQrn 豆瓣rn 知乎rn 微博rn 网易rn 淘宝rn 朋友圈rn rn 分享到rn rnrnrn```rnrnrnrn各位大神注意 一下 我这里的 var timer=null;timer是全局变量rn rn 但是我把timer改成局部变量 就是在startMove()方法里面定义了这个变量 ‘rn 代码就会出现抖动!!rnrnrn```rn function startMove(obj,iTarget)rn var iSpeed=0;rn var timer=null;rn clearInterval(timer);rn timer=setInterval(function() rn obj.offsetLeft
关于javascript变量作用域问题
rnrnrn rn Titlernrnrnrn rn rn rn 全选rn 商品rn 单价rn 数量rn 小计rn 操作rn rn rn rn rn rn Casio/卡西欧 EX-TR350rn 5999.88rn rn rn rn +rn rn 5999.88rn 删除rn rn rn rn Casio/卡西欧 EX-TR350rn 5999.88rn rn rn rn +rn rn 5999.88rn 删除rn rn rn rn Casio/卡西欧 EX-TR350rn 5999.88rn rn rn rn +rn rn 5999.88rn 删除rn rn rn rn Casio/卡西欧 EX-TR350rn 5999.88rn rn rn rn +rn rn 5999.88rn 删除rn rnrn rnrn rn 全选rn 删除rn 结算rn 合计: ¥0.00rn 已选商品rn 0件rn ∧rn ∨rn rn rn rn rn rn ..rn rnrn rnrnrn541行的tr 552,557 的全局函数,怎么都访问不到rn谁能解释一下这个作用域的问题,以及怎么改进代码书写能防止这样的问题发生
一个javascript的变量作用域问题
[img=https://img-bbs.csdn.net/upload/201411/22/1416631774_918171.png][/img]rn如上图,同一个对象的2个函数logToken和getToken,实现完全一样,为什么一个不能执行另一个又能执行呢?
关于Javascript的变量作用域的问题
有两个页面,属于父子关系,代码如下:rn父页面rn[code=HTML]rnrn 父页面rn rnrn rn rnrn[/code]rn子页面rn[code=HTML]rn 子页面rnrnrn访问父页面变量:rn rnrnrn[/code]rnrn这样访问父页面的变量会产生异常。我知道加上parent.tmp会正常。rn那么,如果不加parent,应该怎样解决。rn建议我加parent的请勿扰
javascript 变量作用域
[code=&quot;javascript&quot;] New Document var global = 'global'; var local = 'global'; function tt() { //没有用var声明的变量为隐式声明一个全局变量或使用已有全局变量 //局部变量声明建议都加上var global = 'local'; /...
JavaScript变量作用域
JavaScript中唯一有自身作用域的结构只有函数。
JavaScript中关于变量作用域的问题
先看看第一个含有JavaScript代码的HTML页面:rnrnrnrn Examplernrnrn rnrnrnrn按常理说在for()中定义的变量,出了for()循环之后就应该不存在了,为什么在for()之后还可以正确打印出i的值。rnrn当看到另外一个页面时,我更糊涂了:rnrnrnrn Example2rnrnrn rnrnrnrn除了开始的问题外,在第二个for()循环中的y值,居然可以在大括号之外y还可以被感知!!!!!!!
关于javascript中变量作用域的问题
var name='200';rn function myFunc()rn alert(name);//输出1rn var name=100;rn window.alert(name);//输出2rn rn myFunc();rn请问为什么输出1是undefined
请教一个javascript变量作用域的问题!
先看我的代码:rn[code=javascript]rnvar Obj = rn i : 1,rn getI : function()rn return this.i;rn ,rn getIAdd1 : function()rn return this.i + 1;rn rn; rnObj.i = 2;rnalert(Obj.getIAdd1());rn[/code]rnrn想让Obj里面的i属性不被外界访问到,但是内部那两个函数要用到i,代码该怎么改。这就是js闭包的问题吗?rn万分感谢!
JavaScript的变量作用域详解
全局变量 定义在所有函数之外的变量,全局作用域的变量能够在所有的js脚本中使用: var num=2;//全局变量 function fn(){ console.log(num);//打印变量num } fn(); console.log(num);//打印变量num 不管在函数体里...
JavaScript的执行环境和变量作用域
JavaScript的解释器每开始执行一个函数时,都会为那个函数创建一个执行环境。这个执行环境有重要的部分就是全局变量。所有的JavaScript函数都运行在自己独有的执行环境中,而且具有自己的调用对象,在调用对象中定义局部变量。每个JavaScript执行环境都有与之相联系的作用域链,当JavaScript代码查看该链的第一个对象X,如果那个对象一个名为X的属性,那就用,不然就继续查找链。
JavaScript变量作用域探究
  JavaScript变量作用域探究 前段时间,在coding的时候,碰到了当时感觉不可思议的问题。简化下问题,大体是这样的:          if(false){          var a = 12; } console.log(a);       // undefined 当时对这个问题很困惑,回去恶补了下JS变量的相关知识,发现还是自己的基础知识掌握的不够扎实,于是...
JavaScript中的变量作用域
在es5中变量作用域分为两种:全局变量,局部变量; 局部变量:写在函数体内部,其中函数中所传递的参数也是局部变量(小括号中的),仅在定义的部分能够使用; 全局变量:写在函数体外部的变量,其中在函数中使用但未用var声明的变量也是全局变量,可以在全局中任何部分使用; 下面是关于变量作用域的小案例: 全局变量 (1)直接声明 var a = 10; console.log(a) ...
javascript之变量作用域内存问题
访问变量有按值和按引用两种方式,而函数的参数只能按值传递。把参数当成局部变量就行了。 var a = 10; function add(num){ num += 10; return num; } var r = add(a); a=10,r=20//参数按值传递,所以不会改变a的值 var a = new Object(); function change(obj){ obj.name=
吐槽:javascript的变量作用域,不习惯
[code=&quot;java&quot;]var scope = &quot;global&quot;; function f(){ alert(scope);//1 var scope=&quot;local&quot;; alert(scope);//2 } f();[/code] javascript权威指南上的一段程序,语句1的scope是undifined。 局部变量的作用域是整个函数体,这本身...
理解JavaScript变量作用域.pdf
理解JavaScript变量作用域.pdf 本人还有几十本经典javascript书籍以及无数javascript资料,要的加我qq 568094881,本人网址:www.maoshanhai.com
javascript理解之变量作用域与闭包
何为闭包闭包是指能够访问自由变量的函数 (变量在本地使用,但在闭包中定义)。换句话说,定义在闭包中的函数可以“记忆”它被创建时候的环境。函数作用域与声明提前var scope= "global scope"; function f(){ console.log(scope); //undefined,并没有出现"global scope" var scope="local scope";
JavaScript变量作用域和变量提升
在看别人代码时,发现一个问题,就是一个未在上面声明或者定义的变量,可以正常使用而且不报错,我双击变量名,编译器给我把同名的高亮之后,发现这个变量的定义是在使用的下方定义的,网上查询才得知这是JS变量的一个特性,叫做变量提升,下面,先从最熟知的开始去理解这个变量提升!!<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>JavaScr
javascript var与变量作用域
var a=10; //正确 a=10; //正确 在javascript中,以上两种方法都是定义变量的正确方法。微软的Script56.CHM中是这样解释的: 尽管并不安全,但声明语句中忽略 var 关键字是合法的 JScript 语法。这时,JScript 解释器给予变量全局范围的可见度。当在过程级中声明一个变量时,它不能用于全局范围;这种情况下,变量声明必须用 ...
JavaScript 中的变量作用域-1
在 JavaScript中,如果变量在 函数体内 是使用 var 关键字声明的变量,是局部变量;不用 var 关键字声明的变量是全局变量。 下面这段JavaScript代码运行后会发生什么? // 代码1 // filename is test.js var test = function(){ var f = "hello world"; } test(); console.log(f); ...
深入理解JavaScript变量作用域
摘自《JavaScript 权威指南》       全局变量具有全局作用域,在函数中声明的变量具有局部的作用域。如果一个函数定义嵌套在另一个函数中,那么在嵌套的函数中声明的变量就具有嵌套的局部作用域。            每个JavaScript执行环境都有一个和她相关联在一起的作用域(scope chain)。这个作用域链是一个对象列表或对象链。当JavaScript代码需要...
javascript变量作用域预解析
javascript当中预解析比较坑的地方; 1.javascript解析代码的时候,会分为两个部分,第一个部分为预解析,第二个部分为开始从头到尾执行代码。 预解析三点: 所有声明为var的变量并且赋值,会将var 变量名提前到作用域最上面。 console.log(c); var c=0; 转换为 var c; console.log(c); c=0; 只声明为定义,所以输出结...
【JavaScript学习笔记】3:变量作用域
局部变量 在函数体内用var声明的是局部变量,在函数结束即销毁: HTML> BODY> BODY> HEAD> meta charset="utf-8"> script> //console.log(x); //函数外不可见 myfun(); //函数执行 //console.log(x); //函数外不可见
JavaScript拾漏之变量作用域
JavaScript拾漏之变量作用域变量作用域说到变量作用域,一般会有以下的说法: 在所有函数之外声明的变量,叫做全局变量,因为它可被当前文档中的其他代码所访问,其作用域称为全局作用域。在函数内部声明的变量,叫做局部变量,因为它只能在该函数内部访问,其作用域称为局部作用域(函数作用域、块作用域)。 但这样的说法是有问题的,不信试试下面的代码。 var fo1 ="JavaScript";
JavaScript的变量作用域和闭包操作
初次写稿,有什么技术问题,可以直接call我! 变量的作用域         每个函数 来定义作用域,函数内部用var来声明,那么这个变量只能允许在本函数内使用,那么此时就像是骑车的班头米玻璃一样,在函数里面可以看到外面的变量,但是在函数外面却不能看到函数里面的变量;作用域之间的相互嵌套,将形成作用域链,函数的嵌套将形成闭包;   作用域 JavaScript中有两种作用域:局部作用域和全
javascript关于变量作用域
【1】当全局变量传参数进入函数 var color_first='blue' function change_color(obj) { obj='red'; return obj; } var color_second; color_second=change_color(color_first); alert(color_first)
JavaScript 变量作用域和声明提升
本博文参考 文章 《javascript设计模式和开发实践》变量作用域相信大家能理解,但是,命名提升?What is this?虽然有javascript开发经验,但是有些概念还是需要不断复习,特别是不常见的。一、变量作用域 说到这个概念,不有自主的想到this,scope 这两个关键字。JavaScript的this总是指向一个明确的对象,这个对象是在执行的时候动态绑定的。通俗的说就是谁调
JavaScript变量作用域和内存管理
前言 JS中变量是弱类型,也就是说它的值和类型可以在脚本的生命周期内改变,这时一个强大的特性,但是使用起来也非常容易出现问题。JS中的数据分为基本类型和引用类型,Undefined、Null、Boolean、Number、String这五种就是基本类型,它们都是按值访问的变量,可以操作保存在变量中的实际值;引用类型的值保存在堆内存中的对象里,引用类型在实际操作的是对象引用。 动态属性 对...
JavaScript学习笔记九:变量作用域
JavaScript教程传送门由于JavaScript的函数可以嵌套,此时,内部函数可以访问外部函数定义的变量,反过来则不行:'use strict';function foo() { var x = 1; function bar() { var y = x + 1; // bar可以访问foo的变量x! } var z = y + 1; // Re
JavaScript 变量作用域、this、闭包
JavaScript 变量作用域、this、闭包 变量作用域 scope 和作用域链 scope chain var 变量的作用域和变量提升 作用域链 ES6 中的 let 和 const this 全局上下文 global context 函数上下文 function context 补充:箭头函数、严格模式下的 this 闭包 closure 变量作用域 scope 和作用域链 scope
JavaScript this 以及 变量作用域
首先, 我先抛出一个定论:”在Javascript中,This关键字永远都指向函数(方法)的所有者”. 具体参考下面的博客: http://www.laruence.com/2009/09/08/1076.html http://www.cnblogs.com/birdshome/archive/2005/03/07/95931.html http://www.cnblogs....
JavaScript变量作用域和内存
JavaScript可以保存两种类型变量的值:基本类型和引用类型即undefined、number、string、Boolean、null和object两种    基本类型内存固定被保存在栈内存中 引用类型是对象保存在堆内存中 变量值:基本类型将值复制到新分配的位置上   引用类型变量是指向地址的指针 复制时复制出一个指向同对象的指针 执行环境:局部环境可以访问父环境 反之不能直接访问 执行环
javaScript(十八)变量作用域
var 在ES6之前JS使用函数作用域,使用var声明的变量在声明它的函数体以及该函数体中的嵌套函数体内都可以访问,使用var定义的变量会被声明提前。 函数内所有使用var声明的变量在函数体内可见,这意味这变量在声明之前已经可用,这个特性叫做声明提前,即函数中所有变量及函数声明都回提升至函数体的顶部 var x=5; function f(params) { //虽然x的局部声明在后...
相关热词 c# 线程顺序 c#昨天当前时间 c# 多进程 锁 c#mysql图片存取 c# ocx 委托事件 c# 读取类的属性和值 c# out 使用限制 c#获取url的id c#怎么进行分页查询 c# update 集合