专项练习19

目录

一、选择题

    1、关于JavaScript的说法,下列选项中,错误的是()

    2、以下代码将返回:

    3、执行以下代码,输出结果为()

    4、对于代码 var a = 10.42; 取出 a 的整数部分,以下代码哪些是正确的?

二、编程题

    1、将参数数组反转之后返回


一、选择题

1、关于JavaScript的说法,下列选项中,错误的是()

A、JavaScript是一种动态类型,弱类型,基于原型,直译式的脚本语言

B、JavaScript是一门多线程的语言

C、浏览器端的JavaScript包含ECMAScript,DOM对象以及BOM对象

扫描二维码关注公众号,回复: 15718997 查看本文章

D、JavaScript语言不仅可以在浏览器环境运行,也可以在node.js提供的服务器端平台运行

正确答案:B        你的答案:A

解析:

(1)JavaScript语言最大的特点就是单线程,在某个特定时刻,只有特定的代码能够被执行

(2)JavaScript 是一种专门为与网页交互而设计的语言,由下列三个不同的部分组成:

  • ECMAScript,提供核心语言功能
  • 文档对象模型(DOM),提供访问和操作网页内容的方法和接口
  • 浏览器对象模型(BOM), 提供与浏览器交互的方法和接口

2、以下代码将返回:
Number(null);

A、Null

B、0

C、undefined

D、1

正确答案:B        你的答案:C

解析:

(1)Number()可以用于任何数据类型转换,null、empty、0,  Number() 默认把其转化为0

(2)转换规则如下:

①如果是Boolean值,true和false将分别被转换为1或0

②如果是null值,返回0

③如果是undefined,返回NaN

④如果是字符串则遵循以下规则

  • 字符串只把含数字(包含前面带正号或负号的情况),则将其转换为十进制数值,前导零会被忽略(例如“011”会变成11)
  • 如果字符串中包含有效的浮点格式,则将其转换为相应的浮点数值,前导零会被忽略
  • 如果字符串中包含十六进制格式,则将其转换为相同大小的十进制整数;//number("01f")=31;
  • 如果字符串是的,则将其转换为0;//number(" ")=0
  • 如果字符串中包含除以上格式之外的字符,则将其转换为NaN //number("helloworld")=NaN

⑤如果是数值,传啥返啥

⑥如果是对象,则调用对象的 valueOf() 方法,然后依照前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的 toString() 方法,然后再次按照前面的规则转换返回的字符串值

(3)下面几个都会转化为0

Number()
Number(0)
Number('')
Number('0')
Number(false)
Number(null)
Number([])
Number([0])

(4)其他转换例子

console.log(Number(undefined));    //NaN
console.log(parseInt(""));        //NaN
console.log(parseInt(null));      //NaN
console.log(parseInt(undefined)); //NaN
console.log(null == 0); //false
console.log(undefined == 0); //false

(5)注意

        不要跟 boolean() 的转换弄混,在 boolean() 的转换中 ""、0、-0、NaN、null、undefinded会被转换为 false ,[]会转换为 true,但在 number() [] 会转换为0


3、执行以下代码,输出结果为()
console.log(1);
let a = setTimeout(() => {console.log(2)}, 0);
console.log(3);
Promise.resolve(4).then(b => {
    console.log(b);
    clearTimeout(a);
});
console.log(5);

A、1 2 3 4 5

B、1 3 4 5

C、1 3 5 4

D、1 3 5 4 2

正确答案:C

解析:

(1)promise 对象的 then() 方法属于微任务,而setTimeout()定时器函数为宏任务

(2)在执行顺序处理上,js会执行所有同步代码,然后执行微任务队列中的所有微任务最后再继续执行宏任务

(3)本题中,先执行同步代码并输出1 3 5,接着执行Promise.resolve().then()方法,输出4,由于在then()方法内删除了定时器函数,所以不会再输出2,最终输出结果为1 3 5 4


4、对于代码 var a = 10.42; 取出 a 的整数部分,以下代码哪些是正确的?

A、parseInt(a);

B、Math.floor(a);

C、Math.ceil(a);

D、a.split('.')[0];

正确答案:AB        你的答案:ACD

解析:

A:parseInt 转换为整数,默认为10进制,结果为10

B:floor 取整,结果为10 

C:ceil 取整,结果为11

D:split 操作数必需为正则字符串,结果为TypeError


二、编程题

1、将参数数组反转之后返回

解析:

(1)reverse()反转

<script>
    let arr = [12,23,34,45,56,67]
    function _reverse(arr){
        return arr.reverse()
    }
    console.log(_reverse(arr));
</script>

(2)普通for循环,从后往前遍历原数组,然后push()到新数组

<script>
    let arr = [12,23,34,45,56,67]
    function _reverse(arr){
        let newArr = []
        for(let i = arr.length-1;i>=0;i--){
            newArr.push(arr[i])
        }
        return newArr
    }
    console.log(_reverse(arr));
</script>

(3)sort()比较大小,当函数为负数a,b交换位置,所以当return的小于0即-1时,可以实现倒序

<script>
    let arr = [12,23,34,45,56,67]
    function _reverse(arr){
        return arr.sort((a,b)=>-1)
    }
    console.log(_reverse(arr));
</script>

(4)双指针for循环

<script>
    let arr = [12,23,34,45,56,67]
    function _reverse(arr){
        for(let i=0,n=arr.length-1;i<=n;i++,n--){
            [arr[i],arr[n]] = [arr[n],arr[i]]
        }
        return arr
    }
    console.log(_reverse(arr));
</script>

(5)while()

<script>
    let arr = [12,23,34,45,56,67]
    function _reverse(arr){
        let i = 0,n=arr.length - 1
        while(i++ <= n--){
            [arr[i],arr[n]] = [arr[n],arr[i]]
        }
        return arr
    }
    console.log(_reverse(arr));
</script>

猜你喜欢

转载自blog.csdn.net/qq_51478745/article/details/131534139