关于window

一、所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。
二、全局变量是 window 对象的属性。
三、全局函数是 window 对象的方法。

所有在全局作用域中声明的变量、函数都会变成window对象的属性和方法。如:

var name = "xiaomi";
console.log(window.name);//"xiaomi"

全局变量不能通过delete删除,而window属性上定义的变量可以通过delete删除:

var num1=123;
window.num2=456;
delete num1;
delete num2;
console.log(num1);  //123
console.log(num2);  //num2 is not defined

全局变量num1之所以不能通过delete删除,是因为通过var语句添加的全局变量有一个configurable属性,其默认值为false,如下,所以这样定义的属性不可以通过delete删除。

var num1=123;
window.num2=456;
Object.getOwnPropertyDescriptor(window, "num1");
//Object {value: 123, writable: true, enumerable: true, configurable: false}
Object.getOwnPropertyDescriptor(window, 'num2');
//Object {value: 456, writable: true, enumerable: true, configurable: true}

尝试访问未声明的变量会报错,xxx is not defined。
但是通过查询window查询,可以知道某个可能未声明的变量是否存在,不会报错,只会显示undefined。

console.log(num1); // undefined
var num1=123;
console.log(num2); // ReferenceError: a is not defined
window.num2=456;

这一点可以用预编译解释,var声明的变量会提升声明到顶部。

在函数中使用var定义的变量是局部变量。
有时想要在外部也访问到函数里面的变量,就需要定义window对象属性。

function () {
	var num1 = 123;
	window.num2 = 456;
console.log(num1); //num1 is not defined
console.log(num2); //456
                    JavaScript通过var定义全局变量与在window对象上直接定义属性的区别关于window区别一区别二区别三关于window一、所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。二、全局变量是 window 对象的属性。三、全局函数是 window 对象的方法。所有在全局作用域中声明的变量、函数都会变成window对象的属性和方法。如:va...
				
相信你对全局变量一定不陌生,在函数作用域里用a=1这种形式定义的变量会是一个全局变量,在全局作用域里,用下面3种形式都可以创建对全局可见的命名: 代码如下:[removed]var a = 1;b = 2;window.c = 3;[removed]对于b=2这种方式, 它其实和c是一样的,在执行这个赋值语句的时候,会沿着作用域链寻找名字叫做b的变量,一直找到作用域链的顶端还没有找到,于是给window添加一个属性b然后赋值。 var与不var有两个区别: 1 var全局变量不能被删除,因为delete智能删除对象的可删除的属性,而通过var 定义的全局属性会被标明不可删除。需要说明的是,de
JS声明全局变量主要分为显式声明或者隐式声明下面分别介绍。 声明方式一: 使用var(关键字)+变量名(标识符)的方式在function外部声明,即为全局变量,否则在function声明的是局部变量。该方式即为显式声明详细如下:<script> var test = 5;//全局变量 function a(){ var a = 3;//局部变量 alert(a)
var abc=89;//带var,表示全局变量 function test(){  var abc=80;//在函数内部,如果不带var,表示使用函数外全局变量;带上var,表示新定义一个全局变量 test(); window.alert(abc); [removed] 严格来说:函数体内不带var,并不是指定义一个变量,而是进行变量赋值,即
就是这种盲目无原理依据的研究测试弄晕了我, 有必要这么做吗? 其实理解了原理就没必要搞这么多一个一个的试, 然后得出规律, ECMAScript规则都已经定义好了. var的规则是: 使用var声明变量就是内部变量, 否则就是先调用全局变量, 不管多少层函数. this的规则是: method函数里的this永远指向自身, 普通函数的this永远指向DOMWindow. // GodDamnTest1 function Foo() { var a = 123; // 局部变量, 所有子函数的全局变量 this.a = 456; // 对象属性 (function() { alert(a);
1.window全局变量 javascript自带一个window全局变量,alert,console等方法存在于全局变量。 若定义变量不使用var,let,const,那么该变量默认为一个全局变量。 a = 8; console.log(window.a); 2.var 定义变量的关键字 3.let 解决局部作用域冲突问题,比起var更推荐使用 4.const 定义常量,该关键字定义的变量值不可更改。
var定义全局变量window变量区别 使用var定义全局变量相当于直接挂载在window对象上,但是和window.c=2定义的变量有所不同。 直接定义全局变量直接挂载在window上,a=2;和window.a=2,效果一样。 var定义变量不能使用delete删除 原因:通过var语句添加的全局变量有一个configurable属性,其默认值为false,直接定义window.c的configurable属性是true var a = 2; windows.c = 3; delete a; 然而全局变量和与在window对象定义属性还是有一点区别的:   全局变量不能通过delete操作符删除,二在window定义属性就可以   var age = 22;   window.color = ...
执行上下文(Execution context) 执行上下文(简称上下文)决定了Js执行过程可以获取哪些变量、函数、数据,一段程序可能被分割成许多不同的上下文,每一个上下文都会绑定一个变量对象variable object),它就像一个容器,用来存储当前上下文所有已定义或可获取的变量、函数等。位于最顶端或最外层的上下文称为全局上下文(global context),全局上下文取决于执行环境,如Node的global和Browserwindow: 需要注意的是,上下文与作用域(scope)是不同的概念。Js本身是单线程的,每当有function被执行时,就会产生一个新的上下文,这一
var x = 2; y = 3; console.log(x); //2 console.log(y); //3 console.log(window.x);//2 console.log(window.y);//3 可以看出x,y都挂在window下,成为window
JS声明全局变量主要分为显式声明或者隐式声明下面分别介绍。 声明方式一: 使用var(关键字)+变量名(标识符)的方式在function外部声明,即为全局变量,否则在function声明的是局部变量。该方式即为显式声明详细如下: var test = 5; //全局变量 function a() var cc=3; //局部变量 alert(test);
今天安装jave RE,需要设置全局变量,除了图形界面的配置外,有没有其他的方式设置呢,开始以为set可以,看了半天没整明白到网上search下,见到了几种方法: 1、 regedit方法 路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment 可手动也可脚本 ...