`
yxylwt
  • 浏览: 14525 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于this 和 var

阅读更多
  很多人都觉得在javascript声明一个变量,加var和不加var没有什么区别,实际上是一个错误的观点,如果在函数外面,也就是说在window区域加不加var确实是一样,因为都会是全局变量的效果,而如果在函数内部,加var就是局部变量,不加是全局变量。
function test(){  
  var1 = 2;
  alert(var1);     
}  
test();  
alert(var1);
这样可以显示为2
function test(){  
  var var1 = 2;
  alert(var1);     
}  
test();  
alert(var1);
则为变量未定义错误

this多用于函数内部,它永远指向调用他的那个对象,看看下面的例子就明白了

var test={
   a:"test",
   msg:function(){
     a="1234";
     alert(this.a);
     var msg1= function(){
alert(this.a);
     }
     msg1();
   }
}
test.msg(); 这样会分别显示 "test" ,"1234".

但this也不是这么简单,在看看下面的例子
function test1()  
{  
  this.var01 = "test";
}

function test2()  
{
  alert(var01);
}

var a= new test1();
test1();
test2();
alert(a.var01);
都可以得到"test".
可以发现var01变量既是一个全局变量,又是test1内的成员变量。也就是说,如果在函数内部用this定义的变量,如果这个函数你不是直接来运行,而是作为一个类来new的话,虽然函数也要执行一遍,但里面的this定义的 变量是作为类的成员变量来定义的,也就是一个局部变量,上面的测试代码,如果去掉test1();  test2()运行就是未定义变量错误了。

说到变量,最后提一下js变量无类型的说法,这个说法本身没有错,但js变量无类型,这话很模糊,有的人会理解成js 里面没有数据类型。这显然是错误的,js 里面也有数字,字符,布尔,类等数据类型。说变量无类型,指的是刚定义一个变量的时候,这个变量是没有类型的,当你给它赋值的时候,值是什么类型,那这个变量就是什么类型了
分享到:
评论
1 楼 peacock 2008-10-14  
学习了,感谢分享

相关推荐

    微信小程序开发中var that =this的用法详解

    在微信小程序开发中,var that =this的声明很常见。举个例子,代码如下! 示例代码1 //index.js Page({ data: { toastHidden: true, }, loadData: function () { var that = this//这里声明了that;将this...

    this的用法以及改变this指向

    ### this的用法以及改变this指向 #### 为什么学习this? 在JavaScript中,`this`关键字的使用极为广泛。理解并掌握`this`的工作机制对于提高编程能力至关重要: 1. **阅读代码的能力**:不了解`this`的工作原理,...

    浅析JavaScript中var that=this

    在阅读别人的代码时,发现别人写的代码中有这么一句:var that = this;,这代表什么意思呢?经过一番查阅,才明白是这么回事。 在JavaScript中,this代表的是当前对象。 var that=this就是将当前的this对象复制一份...

    var r = this.onTimeout(this.duration, this);解决方法

    这版本的AjaxPro.net框架集解决了出现this.onTimeout is not a function的错误,也是经常出现的"缺少对象的错误",同时包括AjaxPro.dll,AjaxPro.2.dll,AjaxPro.JSON.dll, AjaxPro.JSON.2.dll

    微信小程序中为什么使用var that=this

    在微信小程序开发中,我们经常会遇到使用`var that = this`的情况。这主要是因为JavaScript中的`this`关键字的特殊性,它的值不是固定的,而是取决于它被调用时的上下文。在不同的环境中,`this`可能指向不同的对象...

    关于js里的this关键字的理解

    对于JavaScript中的`this`关键字,还有更多细节和特殊案例需要理解和注意。例如,`this`在`setTimeout`或者`setInterval`中的行为与普通函数调用类似。另外,严格模式(`'use strict'`)对`this`的指向有更严格的...

    什么是this

    下面我们来详细地解释this的含义和应用。 this的基本概念 在JavaScript中,this是函数中的一个隐式对象,它总是指向当前函数的调用者。换言之,这个隐式对象就是函数被调用的对象。例如,我们有一个对象obj,它有...

    详解Javascript 中的this指针

    ### 详解Javascript中的`this`指针 在深入探讨`this`指针之前,我们首先应当...通过掌握`this`的动态性质和作用域规则,开发者可以避免常见的错误,如`this`未按预期引用对象的问题,从而写出更加健壮和可维护的代码。

    Javascript中神奇的this

    var obj = { a: 1, fn: function() { console.log(this.a); } }; obj.fn(); // 1 ``` 2.2.1 多层对象调用 在多层对象中调用函数时,`this`指向调用链中的最后一层对象。 ```javascript function fn() { console....

    Javascript的this详解

    在JavaScript中,`this`的绑定遵循四个主要规则:默认绑定、隐式绑定、显式绑定和new绑定。让我们逐一深入理解这些规则。 1. **默认绑定**:在非严格模式下,如果函数没有明确的上下文,`this`会绑定到全局对象,这...

    javascript运行机制之this详细介绍.docx

    理解和掌握 `this` 的使用对于编写健壮且优雅的代码至关重要。与 Java、C# 等纯粹的面向对象语言相比,JavaScript 中的 `this` 更加复杂多变,这也增加了学习和使用的难度。 #### 1. 纯函数中的 `this` 在纯函数中...

    微信小程序开发中 var that =this的用法

    在微信小程序开发中,var that =this的声明很常见。举个例子,代码如下! 示例代码1 1 //index.js 2 Page({ 3 4 data: { 5 toastHidden: true, 6 }, 7 8 loadData: function () { 9 var that = this//这里...

    jquery需要的所有js文件

    a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b....

    js中this对象用法分析

    - 使用`call`和`apply`可以显式地设置`this`的值,但`null`和`undefined`会导致`this`指向全局对象。 - 箭头函数没有自己的`this`,`this`继承自外层作用域。 - 要注意`this`的动态绑定特性,尤其是在嵌套函数和异步...

    跟我学习javascript的this关键字

    `this`关键字是动态绑定的,也称为运行期绑定,这意味着它会根据函数调用的方式和所在的上下文来改变其指向。这种动态绑定的特性给JavaScript带来了灵活性,但同时也可能导致一些困惑,特别是对于初学者。 在...

    Javascript的this用法

    `Function.prototype.call()`和`Function.prototype.apply()`方法可以用来显式地指定`this`的值。 ```javascript function test() { console.log(this.x); } var o = {}; o.x = 1; o.m = test; // 改变this的...

    11-this:从JavaScript执行上下文的视角讲清楚this_For_vip_user_0011

    `call`和`apply`立即调用函数,并允许你指定`this`值和参数。`bind`创建一个新的函数,其`this`值被锁定为指定的值,即使在新函数被调用时也是如此。 ```javascript function greet(name) { console.log(this....

Global site tag (gtag.js) - Google Analytics