js面试题(1)

function test(){
            var a = b = 3;
        }
        test();
        console.log(typeof a == 'undefined');
        console.log(typeof b == 'undefined');

打印结果:

true
false

注: 如果只打印a,则结果为: Uncaught ReferenceError: a is not defined
也就是说打印出来的是未赋值,因为 赋值从右向左,只有b被赋值了,a没有。即:

b = 3;
var a = b;

语句 var a = b = 3; 是语句 b = 3; 和 var a = b;的简写, b 最终成为了一个全局变量(因为它没有前缀 var 关键字),因此仍然在范围内甚至封闭函数之外。

function t(){
            var a=b=c=d=5;
            console.log(a);
        };
        t();
        console.log(typeof a);
        console.log(typeof b);
        console.log(typeof c);
        console.log(typeof d);
        console.log(b);
        console.log(c);
        console.log(d);
        console.log(a);

打印结果:
在这里插入图片描述
可以将函数内的变量解析为:
其中只有a被声明了,b,c和d都是自动解析为全局变量了.
d=5; c=5; b=5; var a=5; 也就是赋值从右向左,b,c,d都是全局变量,a是局部变量。
第一个打印出来的5,打印出的5是局部变量内的5. 函数外打印a却报错,因为a是局部变量。

	   a = 0;
       function t(){
           var a=b=c=d=5;
           console.log(a);
       };
       t();
       console.log(typeof a);
       console.log(typeof b);
       console.log(typeof c);
       console.log(typeof d);
       console.log(b);
       console.log(c);
       console.log(d);
       console.log(a);

打印结果:
在这里插入图片描述
解析:
第一个打印出来的a是局部变量,值为5,最后一个打印出来的a是0,是函数外部的全局变量a,值为0。

	    a = 0;
        function t(){
            a=b=c=d=5;
            console.log(a);
        };
        t();
        console.log(typeof a);
        console.log(typeof b);
        console.log(typeof c);
        console.log(typeof d);
        console.log(b);
        console.log(c);
        console.log(d);
        console.log(a);

打印结果:
在这里插入图片描述
解析:
函数内部可以解析为:d=5; c=5; b=5; a=5; 全部都解析为了全局变量,并且函数内部的a=5把函数外部的a=0覆盖了,因此第一次和第二次打印的a都是5.

		console.log(1===true);   
        console.log(1==true);

打印结果:
在这里插入图片描述
解析:第一个false,因为 === 是全等,即类型和数值都要相等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值