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 向上取整


相关文章
|
2月前
|
JavaScript 前端开发 开发者
Nest.js控制器深度解析:路由与请求处理的高级特性
以上就是对 NestJS 控制层高级特性深度解析:从基本概念到异步支持再到更复杂场景下拦截其与管道等功能性组件运用都有所涉及,希望能够帮助开发者更好地理解和运用 NestJS 进行高效开发工作。
321 15
|
2月前
|
JavaScript 前端开发 IDE
TypeScript vs. JavaScript:技术对比与核心差异解析
TypeScript 作为 JavaScript 的超集,通过静态类型系统、编译时错误检测和强大的工具链支持,显著提升代码质量与可维护性,尤其适用于中大型项目和团队协作。相较之下,JavaScript 更灵活,适合快速原型开发。本文从类型系统、错误检测、工具支持等多维度对比两者差异,并提供技术选型建议,助力开发者合理选择。
603 1
|
2月前
|
存储 JavaScript 前端开发
JavaScript 语法全面解析
JavaScript 语法体系丰富且不断更新,从基础的变量声明、数据类型,到复杂的函数、对象、异步语法,每个知识点都需要开发者深入理解并灵活运用。本文梳理的 JS 语法核心内容,可为开发者提供系统的学习框架,后续还需通过大量实践(如编写交互组件、实现业务逻辑)巩固知识,逐步提升 JS 编程能力,应对前端开发中的各类挑战。
|
5月前
|
机器学习/深度学习 JavaScript 前端开发
JS进阶教程:递归函数原理与篇例解析
通过对这些代码示例的学习,我们已经了解了递归的原理以及递归在JS中的应用方法。递归虽然有着理论升华,但弄清它的核心思想并不难。举个随手可见的例子,火影鸣人做的影分身,你看到的都是同一个鸣人,但他们的行为却能在全局产生影响,这不就是递归吗?雾里看花,透过其间你或许已经深入了递归的魅力之中。
259 19
|
6月前
|
JSON 前端开发 Serverless
Mock.js 语法结构全解析
Mock.js 的语法规范介绍,从数据模板定义规范和数据占位符定义规范俩部分介绍, 让你更好的使用 Mock.js 来模拟数据并提高开发效率。
|
8月前
|
数据采集 前端开发 JavaScript
金融数据分析:解析JavaScript渲染的隐藏表格
本文详解了如何使用Python与Selenium结合代理IP技术,从金融网站(如东方财富网)抓取由JavaScript渲染的隐藏表格数据。内容涵盖环境搭建、代理配置、模拟用户行为、数据解析与分析等关键步骤。通过设置Cookie和User-Agent,突破反爬机制;借助Selenium等待页面渲染,精准定位动态数据。同时,提供了常见错误解决方案及延伸练习,帮助读者掌握金融数据采集的核心技能,为投资决策提供支持。注意规避动态加载、代理验证及元素定位等潜在陷阱,确保数据抓取高效稳定。
263 17
|
8月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
存储 JavaScript 前端开发
全网最全情景,深入浅出解析JavaScript数组去重:数值与引用类型的全面攻略
如果是基础类型数组,优先选择 Set。 对于引用类型数组,根据需求选择 Map 或 JSON.stringify()。 其余情况根据实际需求进行混合调用,就能更好的实现数组去重。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
消息中间件 JavaScript 前端开发
最细最有条理解析:事件循环(消息循环)是什么?为什么JS需要异步
度一教育的袁进老师谈到他的理解:单线程是异步产生的原因,事件循环是异步的实现方式。 本质是因为渲染进程因为计算机图形学的限制,只能是单线程。所以需要“异步”这个技术思想来解决页面阻塞的问题,而“事件循环”是实现“异步”这个技术思想的最主要的技术手段。 但事件循环并不是全部的技术手段,比如Promise,虽然受事件循环管理,但是如果没有事件循环,单一Promise依然能实现异步不是吗? 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您
|
8月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
827 29

热门文章

最新文章

推荐镜像

更多
  • DNS