很多人都觉得在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 里面也有数字,字符,布尔,类等数据类型。说变量无类型,指的是刚定义一个变量的时候,这个变量是没有类型的,当你给它赋值的时候,值是什么类型,那这个变量就是什么类型了
引自博友:http://hi.baidu.com/netkey/blog/item/df6ed209339b7c88d1581be2.html
分享到:
相关推荐
7. **定义变量**:使用`var`关键字声明变量,如`var myVariable = "some value";`。 8. **字符串相加**:JavaScript中字符串可以通过`+`运算符连接。 ```javascript var myString = "String1" + "String2"; ``` ...
在JavaScript编程语言中,`var` 是用于声明变量的关键字。了解`var`的作用和它在使用时的差异,对于编写高效且无错误的代码至关重要。这篇文章将深入探讨`var`关键字的用法以及在声明变量时是否使用`var`的区别。 ...
JavaScript使用`var`, `let` 和 `const`关键字声明变量。`var`用于声明全局或局部变量,`let`用于声明块作用域的变量,而`const`用于声明常量,其值一旦设定就不能更改。例如: ```javascript var x = 10; // 全局...
变量声明通常使用`var`、`let`或`const`关键字,它们在作用域和可变性上有所不同。 2. **运算符** 包括算术运算符(+、-、*、/、%)、比较运算符(==、===、!=、!==、>、<、>=、)和逻辑运算符(&&、||、!)。注意...
因此,在全局作用域中声明的变量和函数实际上是作为全局对象的属性和方法存在的。例如: ```javascript var name = "全局"; function getName() { var name = "局部"; return this.name; } alert(getName()); // ...
2. 使用`var`声明的变量,如果在函数内部,`this`将指向全局对象。 3. 如果在`window`对象上直接定义函数并调用,`this`仍指向`window`。 二、对象函数调用 当一个函数作为对象的方法被调用时,`this`将指向调用该...
在JavaScript中,`var`关键字用于声明变量。在代码片段中出现了一段不清晰的表达“2.varjavaࣩvarʡ”,这似乎是在尝试解释`var`的作用,但由于字符混乱,实际意义难以理解。不过,可以明确的是,`var`用于声明...
- **声明关键词**:使用`var`关键字进行变量声明。例如: ```javascript var carName = "Volvo"; ``` - **多变量声明**:一条语句中可以同时声明多个变量。 ```javascript var x, y, z; ``` - **重新声明**:...
JavaScript变量声明是...遵循良好的编程习惯,如始终使用`var`声明变量,避免全局变量的滥用,以及在适当的情况下使用严格模式,可以帮助减少潜在的错误和提高代码质量。希望这些信息有助于你提升JavaScript编程技能。
- ES6引入`let`声明变量后,全局`let`变量不再成为`window`对象的属性,因此无法通过`this.str`访问。 2. **构造函数中的`this`指向** - 在构造函数中,`this`指向新创建的对象实例。例如: ```javascript ...
### JavaScript中的函数分类与this指向详解 #### 一、引言 在JavaScript中,函数是一种非常重要的编程单元,它不仅可以封装一系列的操作逻辑,还可以作为数据进行传递和处理。此外,函数内部的关键字`this`的指向...
- **变量作用域**:在JavaScript中,如果一个变量未使用`var`、`let`或`const`声明,则它会成为全局变量。在函数内部使用`var`声明的变量则具有局部作用域,仅在该函数内部可访问。例如: ```javascript function...
使用 `let` 和 `const` 关键字声明的变量也会存在变量提升,但与 `var` 不同,初始化没有被提升,在声明变量之前尝试访问变量时,JavaScript 会抛出一个 `ReferenceError`。 事件执行机制 在 JavaScript 中,事件...
在JavaScript中,我们可以使用`var`, `let`, 或 `const` 来声明变量。`var` 是传统的变量声明方式,但存在作用域问题;`let` 和 `const` 是ES6引入的,它们具有块级作用域,`const` 声明的是常量,一旦赋值后不能...
var privateVar = 'This is a private variable'; // ... })(); ``` 总的来说,理解JavaScript的全局变量和局部变量的规则,有助于编写更安全、更易于维护的代码。正确使用作用域,避免全局变量滥用,可以显著...
通常使用 `var`声明变量,也可以不经声明而直接使用变量。但必须先赋值、再取用其值。 5. 关键字 JavaScript关键字包括 `break`、`case`、`catch`、`continue`、`default`、`delete`、`do`、`else`、`finally`、`...
`var`在JavaScript中已经存在,用于声明变量。`let`与`var`类似,但`let`的作用域更加精确,局限于块级作用域,即被`{}`包围的代码块内。这与`var`的函数作用域不同,`var`声明的变量在整个函数内都是可见的。`const...
- 变量:在JavaScript中,使用`var`、`let`或`const`关键字声明变量。`var`在全局或函数作用域内,而`let`和`const`属于块级作用域。 - 数据类型:JavaScript有七种数据类型,包括基本类型(Undefined、Null、...
在JavaScript中,可以使用`var`关键字声明变量: ```javascript var myVariable = "some value"; ``` 变量可以在脚本的不同部分被多次赋值。 ##### 3. 字符串拼接 使用加号`+`进行字符串拼接是一个常见的操作: ...