练习(niukewang)

1.下列window方法中,可以显示对话框的一项是(C)

A: confirm()

B:alert()

C:prompt()

d:open()

解析:

        confirm()是弹出判断对话框;

        alert()是弹窗;

        prompt()显示对话框;

        open()是打开新的页面;

2.执行以下程序,下列说法中,正确的是(A)

var arr = new Array(3); ...①

arr[0] = 1;

arr.b = 0;

console.log(arr.length); ...②

arr.forEach(value=>{

console.log(value); ...③

})

for(var i in arr){

console.log(arr[i]); ...④

}

A:①式创建一个长度为3的数组

B:②式输出结果为4

C:③式输出结果为1 0

D:④式输出结果为1

解析:

        var arr = new Array(3); ...①    //结果是【empty ,empty ,empty  】

        arr[0] = 1;                                //结果是【1,empty ,empty 】

        arr.b  = 0;                                //结果是【1,empty ,empty ,b:0】 

                                                //通过点操作符(.)添加的属性和length属性处于同一层级,不会影响length的值

        console.log(arr.length); ...②    //结果是3

        arr.forEach(value=>{

                console.log(value); ...③   //结果是1 ,因为此时遍历的是【1,empty ,empty】

        })                                              //通过点操作符(.)添加的属性可以用for...in...循环遍历,但不能用foreach循环遍历。

         for(var i in arr){

              console.log(arr[i]); ...④    //结果是0 ,因为此时遍历的是【b:0】

        }                                             //通过点操作符(.)添加的属性可以用for...in...循环遍历,但不能用foreach循环遍历。

注意:

        通过点操作符(.)添加的可以用 forin 循环遍历,但不能用 foreach 循环遍历。而且添加的属性和length属性处于同一层级,不会影响length的值。

3.执行以下程序,输出结果为(C)

function a(){

  console.log(this);

a.call(null);

A:document

B:null

C:window

D:a

E:undefined

解析:

         call继承,对象冒充,因为传入是null或者undefind和没传一样,所以还是全局的window

 4.执行以下程序,输出结果为(D)

let num = (function(x){ delete x;return x;})(1);

console.log(num);

A:抛出异常

B:null

C:undefined

D:1

解析:

        delete只能删除对象的属性。 如果是window.x ,就可以使用delete删除。

        不能删除变量和原型链中的变量。

5.在下列Promise所提供的方法中,用来向成功或者失败的回调函数队列中添加回调函数的是( D)

A:done

B:fail

C:always

D:then

解析:

        then 接收两个回调函数并返回一个新的 promise 对象,这两个回调函数分别对应成功回调 onFullfilled 和失败回调 onRejected,这两个回调函数接收 promise 的返回值;
        always (finally) 接收一个回调函数并返回一个新的 promise 对象,回调函数在上一个 promise 解析完成之后调用,也就是不管前面是 then 还是 catch 被调用了,它都会被调用,该回调函数不会接收参数。

6.下列逻辑表达式的结果为false的是(A) 

A:NaN == NaN

B:null == undefined

C:'' == 0

D:true == 1

解析:

        NaN == NaN  // false

        Object.is(NaN,NaN)  // true

        同一个NaN是相等的,判断两个NaN相等要用Object.is() 之前不相等是因为JS的设计有误,现在已经有方法可以判断了

扩展:

        ==   会进行类型转换,值相同即为true

        ===    不会进行类型转换,类型和值都相同的情况即为true

        Object.is()

     === Object.is()的区别在于对NaN和带符号的0的处理:

                  NaN === NaN // false

                  +0 === -0 // true

                  -0 === +0 // true

                  Object.is(NaN, NaN) // true

                  Object.is(+0, -0) // false

                  Object.is(-0, +0) // false

         Object.is('foo''foo');     // true

   Object.is(window, window);   // true

   Object.is('foo', 'bar');     // false

   Object.is([], []);           // false

   var foo = { a: 1 };

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值