常见代码题

1.看下列代码输出为何?解释原因

var a;
alert(typeof a);//undefined
alert(b);//报错
解释:undefined是一个只有一个值的数据类型,这个值就是"undefined",在使用var声明变量但并未对其赋值进行初始化时,这个变量的值就是undefined,而b由于未声明将报错。
注意未声明的变量和声明了未赋值的是不一样的。
var a = null;
alert(typeof a);//object
解释:null是一个只有一个值的数据类型,这个值就是null。表示一个空指针对象,所以用typeof检测会返回"object"
var undefined;
undefined == null;//true  undefined与null相等,但不恒等(===)
1 == true;//true 一个是number一个是string时,会尝试将string转换为number
2 == true;//false 尝试将boolean转换为number,0或1
0 == false;//true
0 == '';//true
NaN == NaN;//false
[] == false;//true 尝试将object转换成number或string,取决于另外一个对比量的类型
[] == '';//true
[] == [];//false
[] == ![];//true
解释: 隐式转换的时候,[]为false。
[]是对象,用于判断条件就会转成true,但是将[]与布尔值比较却是false,[]==false
var foo = "11"+2-"1";
console.log(foo);//111
console.log(typeof foo);//number
var a = new Object();
a.value = 1;
b = a;
b.value = 2;
alert(a.value);//2(考察引用数据类型细节)
        var x = 1;
        function ScopeTest() {
            alert(x);
            var x = 'hello world';
            alert(x);
        }
        ScopeTest();//先弹出undefined,再弹出hello world
        var x=3;
        (function(){
            x=6;
            y=6;
            var z=3;
        })();
        console.log(x==y);//true
        console.log(z);//报错,z is not defined.
                var a=false;
        var b=6;
        var c=true;
        var d=false;
        var e=6;
        console.log(a||b||c);//6
        console.log(d&&e);//false
        var a = 1;
        function func(){
            a=b=2
        }
        func()
        console.info(a)//2
        console.info(b)//2
        var t = true;
        window.setTimeout(function(){
            t=false;
        },1000);
        while(t){

        }
        alert('end');
        console.log(isNaN(NaN));//true
        console.log(isNaN(23));//false
        console.log(isNaN('ds'));//true
        console.log(isNaN('3213sdasd'));//true
        console.log(NaN === NaN);//false
        console.log(NaN === undefined);//false
        console.log(undefined === undefined);//true
        console.log(typeof NaN);//number
Number(undefined)//NaN
Number(null)//0
parseInt(true)//NaN
parseInt(null)//NaN
parseInt(false)//NaN
 
     if(10>9>8 == true){
         console.log("html5");
     }
     else {
         console.log("css3");
     }
     //css3
     var obj = {};
     obj.name = "first";
     var peo = obj;
     peo.name = "second";
     console.log(obj.name);//second
    var output = (function(x){
         delete x;
         return x;
     })(0);
     console.log(output);//0
原文地址:https://www.cnblogs.com/zhaosijia----1234/p/8996653.html