很多人都觉得在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 里面也有数字,字符,布尔,类等数据类型。说变量无类型,指的是刚定义一个变量的时候,这个变量是没有类型的,当你给它赋值的时候,值是什么类型,那这个变量就是什么类型了
分享到:
相关推荐
在微信小程序开发中,var that =this的声明很常见。举个例子,代码如下! 示例代码1 //index.js Page({ data: { toastHidden: true, }, loadData: function () { var that = this//这里声明了that;将this...
### this的用法以及改变this指向 #### 为什么学习this? 在JavaScript中,`this`关键字的使用极为广泛。理解并掌握`this`的工作机制对于提高编程能力至关重要: 1. **阅读代码的能力**:不了解`this`的工作原理,...
在阅读别人的代码时,发现别人写的代码中有这么一句:var that = this;,这代表什么意思呢?经过一番查阅,才明白是这么回事。 在JavaScript中,this代表的是当前对象。 var that=this就是将当前的this对象复制一份...
这版本的AjaxPro.net框架集解决了出现this.onTimeout is not a function的错误,也是经常出现的"缺少对象的错误",同时包括AjaxPro.dll,AjaxPro.2.dll,AjaxPro.JSON.dll, AjaxPro.JSON.2.dll
在微信小程序开发中,我们经常会遇到使用`var that = this`的情况。这主要是因为JavaScript中的`this`关键字的特殊性,它的值不是固定的,而是取决于它被调用时的上下文。在不同的环境中,`this`可能指向不同的对象...
对于JavaScript中的`this`关键字,还有更多细节和特殊案例需要理解和注意。例如,`this`在`setTimeout`或者`setInterval`中的行为与普通函数调用类似。另外,严格模式(`'use strict'`)对`this`的指向有更严格的...
下面我们来详细地解释this的含义和应用。 this的基本概念 在JavaScript中,this是函数中的一个隐式对象,它总是指向当前函数的调用者。换言之,这个隐式对象就是函数被调用的对象。例如,我们有一个对象obj,它有...
### 详解Javascript中的`this`指针 在深入探讨`this`指针之前,我们首先应当...通过掌握`this`的动态性质和作用域规则,开发者可以避免常见的错误,如`this`未按预期引用对象的问题,从而写出更加健壮和可维护的代码。
var obj = { a: 1, fn: function() { console.log(this.a); } }; obj.fn(); // 1 ``` 2.2.1 多层对象调用 在多层对象中调用函数时,`this`指向调用链中的最后一层对象。 ```javascript function fn() { console....
在JavaScript中,`this`的绑定遵循四个主要规则:默认绑定、隐式绑定、显式绑定和new绑定。让我们逐一深入理解这些规则。 1. **默认绑定**:在非严格模式下,如果函数没有明确的上下文,`this`会绑定到全局对象,这...
理解和掌握 `this` 的使用对于编写健壮且优雅的代码至关重要。与 Java、C# 等纯粹的面向对象语言相比,JavaScript 中的 `this` 更加复杂多变,这也增加了学习和使用的难度。 #### 1. 纯函数中的 `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//这里...
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....
- 使用`call`和`apply`可以显式地设置`this`的值,但`null`和`undefined`会导致`this`指向全局对象。 - 箭头函数没有自己的`this`,`this`继承自外层作用域。 - 要注意`this`的动态绑定特性,尤其是在嵌套函数和异步...
`this`关键字是动态绑定的,也称为运行期绑定,这意味着它会根据函数调用的方式和所在的上下文来改变其指向。这种动态绑定的特性给JavaScript带来了灵活性,但同时也可能导致一些困惑,特别是对于初学者。 在...
`Function.prototype.call()`和`Function.prototype.apply()`方法可以用来显式地指定`this`的值。 ```javascript function test() { console.log(this.x); } var o = {}; o.x = 1; o.m = test; // 改变this的...
`call`和`apply`立即调用函数,并允许你指定`this`值和参数。`bind`创建一个新的函数,其`this`值被锁定为指定的值,即使在新函数被调用时也是如此。 ```javascript function greet(name) { console.log(this....