-
数据类型查看全部
-
delete运算符在严格模式下不能使用查看全部
-
类型检测小结查看全部
-
typeOf 适用时机查看全部
-
(3)VO按照如下顺序填充: 1 函数参数(若未传入,初始化该参数值为undefined) 2 函数声明(若发生命名冲突,会覆盖,包括跟参数的冲突) 3 变量声明(初始化变量值为undefined,若发生命名冲突,会忽略) 会分为2个阶段: function test(a, b){ var c = 10; function d(){} var e = function _e(){};//函数表达式 (function x(){});//表达式 b = 20; } test(10); (1)变量初始化阶段 AO(test) = { a: 10, b: undefined, c: undefined, d: <ref to function "d"> e: undefined }; (2)代码执行阶段 VO(test){ a: 10, b: 20, c: 10, d: <ref to FunctionDeclartion "d"> e: function _e(){}; };查看全部
-
1.执行上下文: http://img1.sycdn.imooc.com//55ac93fa00014e9b12800720-120-68.jpg (1)每次函数调用时,都会有一个对应的执行环境,称为执行上下文(Execution Context,缩写为EC); (2)对整个全局作用域,在运行第一行代码前,会有一个全局执行上下文; (3)同样一个函数,在被调用多次时,每次都有不同的执行上下文。  2.变量对象: (1)执行上下文与变量对象 activeExecutionContext = { VO: { data_var, data_func_declartion, data_func_arguments } }; GlobalContextVO (VO === this === gloab)全局执行上下文 === this var a = 10; VO(globalContext) = { function test(x){ a: 10, var b = 20; test: <ref to function> } }; test(30); VO(test functionContext) = { x: 30, b: 20 } (2)全局执行上下文(浏览器) VO(globalContext) === [[global]]; [[global]] = { Math: <...>, String: <...>, isNaN: function(){[Native Code]} ... ... window: global //applied by browser(host) } String(10); //[[global]].String(10); window.a = 10; //[[global]].window.a = 10; this.b = 20; //[[global]].b = 20;查看全部
-
严格模式形式: 1、 function func(){ 'use strict'; } 2、 'use strict'; function func(){ } 3、 function func(){ //do sth 'use strict'; } 所以,'use strict';//并不一定是第一行 注意: 1、'use strict'严格模式,不允许使用with;如果使用with,会报SyntaxError语法错误 2、严格模式下,不允许未声明的变量被赋值,否则会报ReferenceError;如下 !function(){//这个是对的 x=1; console.log(window.x); } !function(){//这个是错的 'use strict' x=1; console.log(window.x); } 3、arguments变为参数的静态副本 4、delete参数、函数名报SyntaxError错 5、delete不可配置的属性configurable:false 报TypeError错误 6、对象字面量重复属性名,如 var obj = {x:1, x:2}; 会报SyntaxError错误 7、禁止八进制字面量,会报SyntaxError错误 8、eval,arguments变为关键字,不能作为函数名、变量,否则会报SyntaxError 9、eval独立作用域查看全部
-
1.作用域: for(var item in {a: 1, b:2}){ console.log(item); } console.log(item);//item still in scope js中没有块级作用域,在for()等里面定义的变量,在外面依然可以得到,所以item在外部也可以访问到 2.用new Function构造器是无法访问同级作用域的变量的 function outer(){ var i = 1; var func = new Function("console.log(typeof i)"); func();//undefined } outer(); 3.利用函数作用域封装: (function(){ //do sth here var a,b; })(); //利用匿名函数封装将函数内部的变量变为局部变量,而不是全局变量,防止大量的全局变量与类库或代码引发冲突 !function(){ //do sth here var a,b; }();//开头用!或+,作用是将函数变为函数表达式,而不是函数声明。如果省略!,以一个完整的function开头的话,它会理解为函数声明,这样就会被前置处理掉,那么就会留下一对(),会报语法错误查看全部
-
javascript运算符优先级查看全部
-
返回数据类型:typeof 100 "number" typeof null "object" obj instanceof object ([1,2] instanceof Array == true new object() instanceof Array == false) 不同window或iframe间的对象类型检测不能使用instanceof object.prototype.tostring constructor duck type查看全部
-
AAA查看全部
-
我知道真有限查看全部
-
typeOf->基本类型、function,遇null无效 instanceof -》自定义对象,原生对象,遇iframe和window间检测无效查看全部
-
NaN != NaN查看全部
-
2 手动 敲一遍查看全部
举报
0/150
提交
取消