_jQuery = window.jQuery; _$ = window.$; 这两个变量是jQuery唯一使用的两个全局变量。在jQuery.noConflict()函数中,会把这两个变量恢复回去。 对于浏览器检测,jQuery使用的是检查UserAgent,而没有使用特性检测。 rwebkit = /(webkit)[ \/]([\w.]+)/, ropera = /(opear)(?:.*version)?[ \/](\w+)/, rmsie = /(msie) ([\w.]+)/, rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, 初始化函数init jQuery对JS对象的处理比较绕,而最终...
代码如下:/* 1, 变量类型: JavaScript 是弱类型, 变量可存储任意类型, 并且运行期间类型可变; -> 变量可进行类型转换; */ /* 2, 变量声明: */ var i; var index; var i, index; var i = 0, index = 2; /* 变量声明, 无初始值时, 值为 undefined; 并且 var 声明的变量, 不能使用 delete 操作符删除; 重复声明为产生覆盖, 不会造成错误; 遗漏声明, 则会把变量隐式声明此变量, 并做为全局变量; (下节介绍) */ /* 3, 变量作用域: 以...
当变量A赋值给变量B时,会将栈中的值复制一份到为新变量分配的空间中。 如何理解? 代码如下:var x = y = 1; y = 2; alert(x); x的值为多少? 代码如下:var obj = {}; var sub = {}; sub[id] = 3; obj[sub] = sub; sub[id] = 4; alert(obj[sub][id]); obj[sub][id]的值又为多少?他们真的符合你的预期吗? 我们分别运行2段代码,发现第1段程序中x的值没有改变,而第2段程序中的obj[sub][id]的值却改变了。同样是一个赋值操作,...
但是从全局看来,这样会导致出现一些让我们难以掌控的情况的出现:变量同名、多个函数共用一个全局变量后的值的变换……等等。所以,有时候,对于一些简单的全局变量,我们可以通过另一种方式来处理——用自执行函数+闭包的方法来解: 比如:我们要在网页加载时给出一个提示,在网页关闭时给出另一个提示 下面的代码,实现了以上功能 代码如下:var msg1 = "欢迎光临!"; // 定义一个全局变量 var msg2 = "再见!" //定了另一个全局...
常用检查变量类型的方法有两种,下面是解说: 检查变量类型方法一:typeof 格式:typeof 变量 用法:if( typeof 变量 == "类型标识") { ... } 下面是一些常用数据类型对应的typeof值: {an:"object"} : object ["an","array"] : object function() {} : function "a string" : string 55 : number true ...
一.关于Javascript变量声明 在Javascript中,声明一个变量 var a=1; 也可以直接 a=1; 这两种表达是有区别的, 一个是当前作用域的局部变量,另一个则是当前作用域的全局变量; Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。 代码如下:var n=999; function f1(){ alert(n); } f1(); // 999 另一方面,在函数外部自然无法读取函数内的局部变量。 代码如下:function f1(){ var n=999; } alert(n); // e...
一、迷思!由一段代码引发的疑惑 请看如下代码: 代码如下:for(var i=0;i<3;i++) { console.log(j+","+k); for(var j=0;j<3;j++) { var k = j+1; } } console.log(i); 输出结果: undefined,undefined 3,3 3,3 3 如果你是搞c、java等语言的,可能你会不解,为何j、k这种局部变量可以被作用域外的代码访问呢? 如果JavaScript中用var声明的变量可视为局部变量,那么能访问到这个变量的作用域就是这个变量的局部作用域。如上例,在...
一、变量作用域:[P71] 这一句话说的非常精辟:“在ECMAScript中,只有两种执行环境,全局环境和函数环境,每个函数都是一个执行环境,包括嵌套函数。换句话说,其他情况下即使变量声明在一对大括号中,在括号外部仍然可以访问这些变量”。以下给出例子: 代码如下:for(var i=0; i<5; i++) { var num = 20; // 在for语句中声明的变量 } alert(num); // 在for语句外部调用变量,仍然可以得到num的值 对异常语句也同样可以: 代码...
1)Javascript对象成员实验: 代码如下:var f = function d() { this.a = "a";/*这句运行后不存在f.a也不存在d.a存在一个window.a*/ var b = "b";/*局部变量*/ }; var o = { ff: function () { var a = "a"; /*局部变量*/ this.b = "b"; /*这句运行后存在o.b*/ } }; function Man(){ this.age = 30; }; Man.prototype.sex = 1; Man.prototype.name = function () { }; debugger;/*第一处断点*/ f(); o.ff(); var m = new Man(); d...
代码如下://by ppchen var a = 10, b = 2; a = a + b; b = a - b; a = a - b; 代码如下://by Mr.司马 var a = 10000,b=245 a = a^b; b = b^a; a = a ^b; 代码如下://by cloudgamer var a = 33,b=44 a=[a,b] b=a[0] a=a[1] 代码如下://by Mr.司马 var a = 23,b=454; a = {a:b,b:a}; b = a.b; a = a.a; 评:1、2种解法是普遍解,只能交换数字,而3、4种则适用性更广。
作用域分配与变量访问规则 在 ECMAScript 中,函数也是对象。函数对象在变量实例化过程中会根据函数声明来创建,或者是在计算函数表达式或调用 Function 构造函数时创建。(关于'函数对象'请见《理解Javascript_08_函数对象》)。每个函数对象都有一个内部的 [[scope]] 属性,这个属性也由对象列表(链)组成。这个内部的[[scope]] 属性引用的就是创建它们的执行环境的作用域链,同时,当前执行环境的活动对象被添加到该对象列表...
今天遇到了这个问题: 代码如下://伪代码 for (var i=0; i<n; i++) { addEvent(obj[i], "click", func(i)); } 结果出现了问题,所有的dom都被注册了 i=n 的时候的事件,查了一些资料,说是在循环过程过this被改变,注册过的事件也被随之改变,找到了一种解决方法; 代码如下:for (var i=0; i<n; i++) { (function (i){addEvent(obj[i], "click", function (){func(i);});})(i); } 利用必包保持对变量的持久引用,很强大的说! (...
代码如下:<script type="text/javascript"> function createArray() { var arr = new Array(); for (var i = 0; i < 10; i++) { arr[i] = function () { return i; } } return arr; } var funcs = createArray(); for (var i = 0; i < funcs.length; i++) { document.write(funcs[i]() + "<br />"); } //以上输出全部是i的最后一次的值(10),即会输出10个10,显然这不是我们想要的 //原因:因为每个函数都保存了createArray函数的...
JavaScript检查变量的类型,并判断是整形或是字符串或是其它类型等等。 检查变量的类型 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]2、toString 本来是用来做字符串转换的,不过现在流行用来做变量类型的检查了。舜子这里也写了一个函数,方便检查变量的类型,可以用来代替 typeof 代码如下:function getType(o) { var _t; return ((_t = typeof(o)) == "object" ? o==null && "null" || Object.prototype.toString.call(o).s...
譬如下面。 代码如下:for(i=0;i<10;i++){//就不写成: var i=0 alert(i); } 但是,这真的不是个好习惯,下面我就说说为什么写Js的for循环一定要加var,否则会时不时给你带来烦人难查的bug。 譬如现在我们要实现这样的功能:输出 10 20 30 40 50 60 70 80 90 100 通过下面code实现,WriteNumber从1到10循环,每次循环调用TenTimes方法返回10倍的索引值。 代码如...