markdown JS var和这个定义变量的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown JS var和这个定义变量的区别相关的知识,希望对你有一定的参考价值。

>用var和this声明变量,存在一个作用域的问题

>var是在当前作用域(scope)中声明一个变量,而this则是指向当前上下文(context)

>函数的上下文是在函数调用的时候决定的,如果函数有其他对象在调用,则this指向的上下文为这个对象,如果就只是一个函数,则此时的上下文为root(window或者global)

>var可以定义一个局部变量,当然如果var定义在最外层的话,就是全局的局部变量,也就算是全局变量了

>而this关键字定义的变量准确的说应该算是成员变量。即定义的是调用对象的成员变量

>另外在“类(构造函数)”中,我们通常也会用var定义私有属性,而this定义公共属性

```
function test(){this.var1 = 1;  var var2 = 2;}   
var a = new test();
a.var1
1

function test(){this.var1 = 1;  var var2 = 2;}   
var a = new test();
a.var2
undefined

var t = "A";
function test(){
var t = "B";
//this.t = "C";
console.log(t);
console.log(this.t);
console.log(this);
}

var obj = new test(); //this此时的上下文为obj
test(); //this此时的上下文为root(window或者global)

VM349:5 B
VM349:6 undefined
VM349:7 test {}

VM349:5 B
VM349:6 A
VM349:7 Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, …}

var t = "A";
console.log(t);
console.log(this.t);
console.log(this);
VM356:3 A
VM356:4 A
VM356:5 Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, …}

foo.bar() // 上下文是foo(this === foo)
var bar = foo.bar
bar() // 上下文是root
bar.apply(obj) // 上下文是obj
bar.call(obj) // 上下文是obj
```

以上是关于markdown JS var和这个定义变量的区别的主要内容,如果未能解决你的问题,请参考以下文章

js 中使用var与省略var 定义变量的区别

js中let和var定义变量的区别

js中let和var定义变量的区别

js中let和var定义变量的区别

ts和js中let和var定义变量的区别

js 中var contst let 之间的区别