C1能力认证训练题解析 _ 第三部分 _ JavaScript基础

简介: C1能力认证训练题解析 _ 第三部分 _ JavaScript基础

一、JavaScript 变量命名规则

(1)在JavaScript中以下哪些变量名全都是非法的(会导致程序报错)?


       A. 1person,name


       B. name,var


       C. $orderwera23,uiuiuqwer4_23aser2


       D. 1person,var


数字或者某些特殊字符开头以及使用了关键字都会导致语法层面报错;


1person数字开头、var是关键字,所以这两个会导致报错。


(2)在JavaScript中,以下哪些变量名不建议使用?


       A. 1person,var,$orderwera23,uiuiuqwer4_23aser2


       B. 1person,name


       C. name,var


       D. uiuiuqwer4_23aser2,name


1persion和var会导致程序报错,不建议使用;$orderwera23,uiuiuqwer4_23aser2 意义不明,不建议使用。


(3)在JavaScript中,以下字符串中那些不能被作为变量名使用?(使用了,程序就会报错)


       A. owefsdfwef2,var,for,myName


       B. for,function,var


       C. owefsdfwef2,var,function


       D. myName,var,function


关键字(保留字)不能作为变量名使用。在JS语法中,for是用来定义循环结构的关键字;function是用来定义函数的关键字;var是用来定义变量的关键字。


owefsdfwef2虽然意义不清,但是一个合法的变量名,使用它并不会报错;myName是一个合法且意义清晰的变量名。


二、逻辑运算

(1)要想以下JavaScript代码符合预期,空格处应该填什么运算符?


var a = 11
var b = 6
if(__(a<b)) {
    console.log(a)
} else {
    console.log(b)
}

//预期输出结果:11

答案:!


输出结果为11,所以是输出a,执行if后的语句,但a<b是false,我们需要使它变为true,所以用逻辑非 !


(2)以下JavaScript代码运行的预期输出结果是?


var num = 55
var str = "55"
if(num === str) {
    console.log("Yes")
} else {
    console.log("No")
}

//预期输出结果为?____

答案:No


变量num为整型55,变量str为字符串"55",全等运算符 (===) 会比较两者的变量值大小和变量类型是否均相同,此处类型不同,所以返回false,执行else后的语句,就会执行console.log("No")语句,预期打印No


(3)以下JavaScript代码运行的预期输出结果是?


var res1 = 5 > 8
var res2 = true
if(res1 && res2) {
    console.log("Yes")
} else {
    console.log("No")
}

//预期输出结果为?____

答案:No


变量res1是表达式5 > 8的结果,即为false。变量res2为true。然后对res1和res2进行与操作,因为res1为false,所以res1 && res2的结果也为false。


与运算,当其中任何一个操作数为false时,该运算的结果为false,只有当两个操作数都为true时,其运算结果才为true。


(4)以下JavaScript代码运行的预期输出结果是?


var res1 = 6 > 3
var res2 = 8 >= 8
var res3 = false
if(res1 || res2 && res3) {
    console.log("Yes")
} else {
    console.log("No")
}

//预期输出结果为?____

答案:Yes


与(&&)的优先级比或(||)的高。所以res1 || res2 && res3的运算循顺序是先计算res2 && res3,然后再将其结果(false)和res1做或运算。  true || false = true


三、隐式类型转换

(1)以下代码的预期输出是?


var arr = [] 
var str 
if (arr) { 
    str = 'hello' 
} 
console.log(str) 
//预期输出为?____

答案:hello


if分支语句中的条件部分会将值或者表达式的值最终转换成布尔值,空数组转换成布尔值为true,所以变量str会被赋值为hello。


(2)要想是一下JavaScript代码运行符合预期,空格处应该填什么运算符?


var a = true 
var b = 2 
var c = a ___ b 
console.log(c) 
//预期输出: 2

答案:*


a和b,也就是true和2执行运算后结果为2,true转为字符串为1,1*2 = 2,所以用乘号*


(3)以下JavaScript代码运行的预期输出结果是?


var res = 567 + '1' - 89
console.log(res) 
//预期输出: ____

答案:5582


数字类型和字符串类型的值进行+运算,会把数字类型的值转成字符串类型的值然后再和另一个字符串进行拼接操作,最后得到一个拼接后的字符串;


字符串和数字进行-运算,会把字符串转成数字,然后和另一个数字相减。


567 + '1' - 89 = ‘567’ + ‘1’ - 89 = ‘5671’ - 89 = 5671 - 89 = 5582


(4)以下JavaScript代码运行的预期输出结果是?


if (null) {
    console.log('Hello')
} else {
    console.log('World')
}
//预期输出:____

答案:World


null是JS里面一个特殊的值,表示什么都没有,在这里会被转成布尔值。转成布尔类型的话,则为false


(5)以下JavaScript代码运行的预期输出结果是?


var a = {}
if (a) {
    console.log('Hello')
} else {
    console.log('World')
}

//预期输出:____

答案:Hello


{ }表示一个空的对象,在这里会被转成布尔值。在JS中,空对象转成布尔类型的话,其值为true


四、条件分支

(1)以下JavaScript代码的预期输出是?

var a = 8 
if (a > 7) { 
    a = 3 
} 
if (a > 4) { 
    a = 5 
} 
console.log(a)

答案:3


题中有两个if分支的结构,a=8时,a > 7 为真,执行该分支的代码,a = 3,然后代码继续往后执行,此时a=3,a > 4 为假,所以a = 5这个赋值语句不会执行,a还是为3。


(2)要想以下JavaScript代码符合预期,空格处应该填什么(表达式除外)?


var expr = ____ 
switch (expr) { 
    case 1: 
        // 代码块1 
        console.log(111); 
    case 2: 
        // 代码块2 
        console.log(222); 
    case 3: 
        // 代码块3 
        console.log(333); 
        break;  
    case 5: 
        // 代码块5 
        console.log(111); 
    case 6: 
        // 代码块6 
        console.log(222); 
        break; 
    default: 
        // 代码块7 
        console.log(111); 
}
//预期输出:111 222

答案:5


如果case的代码块里面最后没有break,那么当前case被执行后,会立即执行下一个case(不管值是否匹配),直到有一个case的代码块有break为止;


以此类推,只有当expr为5时,会执行代码块5、代码块6,从而打印111, 222 符合预期输出。


五、For循环

(1)想要以下代码运行符合预期则空格处应该填什么整型数字?


for (var i=0; i <= ___; i++) {
    console.log(i)
}
//预期输出结果: 0 1 2 3 4 5

答案:5


循环从0开始,语句2是小于或等于的时候说明会包含空缺的那个数字。


(2)想要以下代码运行符合预期则空格处应该填什么整型数字?


for (var i=1; i <= ___; i+=1) {
    console.log(i)
} 
//预期输出结果:1 2 3 4 5 6 7 8 9

答案:9


语句2空缺结合预期结果来看i的最大值为9,所以i <= 9。


(3)想要以下代码运行符合预期则空格处应该填什么整型数字?


var arr = ['a1', 'b1', 'c1', 'd1', 'e1', 'f1', 'g1', 'h1']
for (var i=0; i < arr.length; i+=___) {
    console.log(arr[i])
}
//预期结果:a1 d1 g1

答案:3


数组的for循环遍历arr[i]指向的就是数组的每一个key所在的值,从a1跳到d1中间跳了3个值(a1是arr[0]、d1是arr[3]、g1是arr[6]),通过规律主要也是看语句三的迭代器+3。


(4)想要以下代码运行符合预期则空格处应该填?

var obj = {
    realName:'张三', 
    phone:13344556789, 
    email:'zhangsan@163.com',
    created_at:'2021-06-12 10:00:00'
}
for (var k in obj) {
    if(k === _______ ){
        console.log(obj[k])
    }
}
//预期结果:zhangsan@163.com

答案:email


对象遍历,赋值的k指向obj的各个键,从realName开始循环,判断k这个键等于什么的时候,打印的obj的值是zhangsan@163.com,主要看哪个键指向的是这个邮箱。


六、Math 内置对象


image.png

(1)表达式 Math.____(13.6589)计算结果为13,则空格处应该填?


floor,小于13.6589的的最大的整数就是13,所以这儿可以使用向下取整的方法floor


(2)要想以下JavaScript代码符合预期,空格处应该填什么(表达式除外)?(使用中文逗号「,」隔开)


var a = -14.4
var b = 10
var c = Math.____ (a*b)
var d = Math.____ (c)
console.log(d)
//预期输出结果:12

答案:abs,sqrt


首先a*b的默认结果为-144(已是整数,取整方法不适用),已知的Math方法里取绝对值可以将-144转为144;144的平方根正好符合答案,故使用平方根方法


abs:表示返回数字的绝对值

sqrt:表示非负实数的平方根函数


(3)要想以下JavaScript代码符合预期,空格处应该填什么整数?


console.log(Math.sqrt(____))
//预期输出结果:9

答案:81


sqrt:表示非负实数的平方根函数


(4)要想以下JavaScript代码符合预期,空格处应该填什么整数?


console.log(Math.____(3, 4, 89)) 
//预期输出结果: 89

答案:max


给Math内置对象上的一个方法传3个参数,最后返回这三个参数中最大的那个参数。所以这个方法应该是求最大值的方法


(5)要想以下JavaScript代码符合预期,空格处应该填什么(表达式除外)?


console.log(Math.____(8.01))
//预期输出结果:9

答案:ceil 向上取整


相关文章
|
11天前
|
JSON 前端开发 JavaScript
【JavaScript技术专栏】JavaScript异步编程:Promise、async/await解析
【4月更文挑战第30天】JavaScript中的异步编程通过Promise和async/await来解决回调地狱问题。Promise代表可能完成或拒绝的异步操作,有pending、fulfilled和rejected三种状态。它支持链式调用和Promise.all()、Promise.race()等方法。async/await是ES8引入的语法糖,允许异步代码以同步风格编写,提高可读性和可维护性。两者结合使用能更高效地处理非阻塞操作。
|
5天前
|
SQL 缓存 JavaScript
深入解析JavaScript中的模板字符串
深入解析JavaScript中的模板字符串
13 1
|
11天前
|
JavaScript 网络协议 数据处理
Node.js中的Buffer与Stream:深入解析与使用
【4月更文挑战第30天】本文深入解析了Node.js中的Buffer和Stream。Buffer是处理原始数据的全局对象,适用于TCP流和文件I/O,其大小在V8堆外分配。创建Buffer可通过`alloc`和`from`方法,它提供了读写、切片和转换等操作。Stream是处理流式数据的抽象接口,分为可读、可写、双工和转换四种类型,常用于处理大量数据而无需一次性加载到内存。通过监听事件和调用方法,如读取文件的可读流示例,可以实现高效的数据处理。理解和掌握Buffer及Stream能提升Node.js应用的性能。
|
11天前
|
JavaScript 前端开发 开发者
Node.js的包管理和npm工具深度解析
【4月更文挑战第30天】本文深入解析Node.js的包管理和npm工具。包管理促进代码复用和社区协作,包包含元数据描述文件`package.json`和入口文件。npm提供搜索、安装、发布等功能,通过命令行进行操作,如`install`、`search`、`uninstall`。npm支持版本控制、全局安装、脚本定义及私有仓库。理解和熟练运用npm能提升Node.js开发效率。
|
12天前
|
前端开发 JavaScript 数据安全/隐私保护
前端javascript的DOM对象操作技巧,全场景解析(二)
前端javascript的DOM对象操作技巧,全场景解析(二)
|
12天前
|
移动开发 缓存 JavaScript
前端javascript的DOM对象操作技巧,全场景解析(一)
前端javascript的DOM对象操作技巧,全场景解析(一)
|
12天前
|
JavaScript 大数据 开发者
Node.js的异步I/O模型与事件循环:深度解析
【4月更文挑战第29天】本文深入解析Node.js的异步I/O模型和事件循环机制。Node.js采用单线程与异步I/O,遇到I/O操作时立即返回并继续执行,结果存入回调函数队列。事件循环不断检查并处理I/O事件,通过回调函数通知结果,实现非阻塞和高并发。这种事件驱动编程模型简化了编程,使开发者更专注业务逻辑,为高并发场景提供高效解决方案。
|
16天前
|
JavaScript 前端开发 Linux
|
4天前
|
Java Android开发
Android12 双击power键启动相机源码解析
Android12 双击power键启动相机源码解析
13 0
|
1天前
PandasTA 源码解析(一)(2)
PandasTA 源码解析(一)
7 0

推荐镜像

更多