【粉笔刷题】JavaScript

第一题
以下Js程序的输出是什么

<SCRIPT LANGUAGE="JavaScript">

    var a="undefined";

    var b="false";

    var c="";

    function assert(aVar){

        if(aVar)      

            alert(true);

        else  

            alert(false);

    }

    assert(a );

    assert(b );

    assert(c );

</SCRIPT>
true,true,false

变量abc都是字符串型的变量,而不是真正的undefined和false,在判断里都会被认为是真值,显示true,只有空串为false

第二题

假设 a 是一个由线程 1 和线程 2 共享的初始值为 0 的全局变量,则线程 1 和线程 2 同时执行下面的代码,最终 a 的结果不可能是() 

boolean isOdd = false; 

for(int i=1;i<=2;++i) 

{ 

if(i%2==1)isOdd = true; 

else isOdd = false; 

a+=i*(isOdd?1:-1); 

} 

不可能为1,可能为-2,-1, 0
1.AB不并发:此时相当于两个方法顺序执行。A执行完后a=-1,B使用-1作为a的初值,B执行完后a=-2
2.AB完全并发:此时读写冲突,相当于只有一个线程对a的读写最终生效。相同于方法只执行了一次。此时a=-1
3.AB部分并发:假设A先进行第一次读写,得到a=1;之后A的读写被B覆盖了。B使用用1作为a的初值,B执行完后a=0
第三题
下面代码执行后,foo.x的值是 ?

var foo = {n: 1};

var bar = foo;

foo.x = foo = {n: 2};

foo指向对象{n:1}

bar指向对象{n:1}

首先foo断开原来的指向,指向{n:2},

然后foo.x将找不到,所以为undefined

第四题
以下代码的执行后将输出()

 

var a = 0;

var obj = {

 a:'obj',

 b:function(a){

 setTimeout(function(){

 console.log(this.a);

 },1000)

 }

}

obj.b(1);

setTimeout函数中的this指向是window对象,window对象中的a为0。

第五题
以下输出结果为true的有



A

’ ’==false

B

’ ‘==0

C

’ ’==[ ]

D

’ ’=={ }

A选项,B选项,C选项,JavaScript在做==运算时会将操作数转换为Number类型之后再操作,而’ ',false,0和[]都可以转换为number类型。所以A,B,C正确。

D选项,{}转换为number类型是NaN。

第六题
以下运算结果不是number类型的是



A

"a"-1

B

1/0

C

0 && "a"

D

new Number(1)

A;‘a’-1为NaN 数据类型为number

B:1/0为infinity 0/0返回NaN,正数/0返回infinity,负数/0返回-infinity 数据类型为number

C:0 && “a" 为0,&&为短路操作,且如果有一个操作数不是布尔值,则结果就不一定返回布尔值。 a && b,如果a能转换成false,则返回a。数据类型为number

D项创建的是基本包装类型的对象。

第七题
使用了"use strict"后,以下哪些描述错误



A

"use strict"; var x = 17; with (obj) { x; } //会报obj未定义的错误

B

"use strict"; var x; delete x; //运行正常

C

function f(a){ "use strict"; a = 42; return a==arguments[0]; } f(5); //运行结果为true

D

function f(str){ "use strict"; return eval(str); } f(‘alert(1)’); //运行正常,弹窗1的对话框

A:严格模式下禁止使用with语句,因为with语句无法在编译时就确定属性到底归属哪个对象。A对

B:严格模式下无法删除变量。只有configurable设置为true的对象属性,才能被删除。B对

C:严格模式下arguments不再追踪参数的变化,在函数内部,参数a被重新赋值为42,但arguments[0]仍然为5。C对

D:严格模式下,在作用域eval()创建的变量不能被调用。D错

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值