JavaScript 的可爱操作QAQ

1.未赋值的变量可以被访问,但未声明的不可以。

 -未声明的变量只能进行 typeof 操作。

这里写图片描述


2.Object.prototype.toString ( ) 方法
这里写图片描述


3.NaN的类型是 Number
这里写图片描述


4.Math.max()和Math.min()的使用方法

  • Math.max()

    -返回给出的零个或多个数值表达式中较大者。 
    -如果没有给出参数,返回值等于 NEGATIVE_INFINITY。如果有参数为 NaN,返回值仍然为 NaN。
    
  • Math.min()

    -返回给出的零个或多个数值表达式中较小的值。
    -如果没有给出参数,返回值等于 POSITIVE_INFINITY。如果有参数为 NaN,返回值也为 NaN。
    

    这里写图片描述


5.语句优先

表达式 分析
[]+{} {}作为右值出现被理解为对象直接量。
{}+[] 根据语句优先原则 {}被理解为复合语句块,因此相当于 {}; +[] 。[]为空,结果为0。
console.log({}+[]) js把()中的语句当做一个表达式,因此{}不能被理解为语句块,而被理解为”[object Object]” + “”,console.log(“[object Object]”+”“)打印结果为[object Object]。

这里写图片描述


6.!逻辑运算符

!false //true
!0 //true
!undefined //true
!null //true
!"" //true

//由此我们可以简写变量不为空
var a;
if(a!=null&&typeof(a)!=undefined&&a!=''){
    //a有内容才执行的代码  
}
if(!!a){
    //a有内容才执行的代码...  
}

这里写图片描述
我不知道该怎么编了…


7.“==”逻辑运算符会将两边的值转为相同类型

  • true 转为 1,false转为 0.
    这里写图片描述

8.预处理

  • 先变量,后函数
function b() {
}
var b
console.log(typeof b)

9.typeof

(function(){
   return typeof arguments;//"object"
})();

这里写图片描述


10.函数被变量在定义是引用为undefined

var p = function test(){
}
test();// ReferenceRrror: test is not defined
test; //"undefined"
  • test可以被重新赋予其他值,也可以在函数内部调用。
  • 递归最好的方法是调用 arguments.callee;

    这里写图片描述


11.delete阻断对对象属性的引用(并不会释放内存,也无法阻断变量的引用)

(function(x){
   delete x;
   return x;//1
})(1);

//正确用法
delete object.property
delete object['property']

12.利用未声明变量只能进行typeof操作,判断是否声明

try{
    if(a == undefined || a){
         console.log("existing");
    }
}catch(err){
    console.log("no existing");
}
var a;  

//结果:existing

13.函数闭包

var foo = {
   bar: function() { return this.baz; },
   baz: 1
};

(function(){
   return typeof arguments[0]();//"undefined"
})(foo.bar);

//传递参数可以看做是赋值,arguments[0]所在的作用域和foo所在的域相同。


14.逗号操作符

逗号操作符 对它的每个操作对象求值(从左至右),然后返回最后一个操作对象的值

(function f(){ return '1'; }, function g(){ return 2; })(); //2

15.自己看吧,我也不知道为什么
这里写图片描述


16.构造函数的返回值会覆盖new原先应有的返回值

new f 和 new f()相同,但前者使用在没有传参的情况下。
通常来说构造函数是没有返回值的,但如果有返回值会覆盖掉new出来的对象。

function f() {
    return f;
}
new f() instanceof f; //false

17.with将对象添加作用域链的顶端

函数的length属性,代表参数的个数。

with (function(x, undefined){});
length;//2

猜你喜欢

转载自blog.csdn.net/weixin_42950052/article/details/81812865