C1 能力认证——JS基础


C1 能力认证——JS基础

JavaScript变量命名规则

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

1person 
name 
var 
$orderwera23 
uiuiuqwer4_23aser2

1person var 
# 不能以数字开头,和关键字命名
在JavaScript中,以下哪些变量名不建议使用?

1person 
name 
var 
$orderwera23 
uiuiuqwer4_23aser2

iperson var $orderwera23 uiuiuqwer4_23aser2
# 不能以数字开头和关键字命名,且必须见名知意
在JavaScript中,以下字符串中那些不能被作为变量名使用?(使用了,程序就会报错)

for 
function 
var 
myName 
owefsdfwef2

for function var
# 使用了关键字
在JavaScript中,以下代码运行会报错

var 1_person = "Hello world!"
console.log(1_person)

对
# 变量名错误,数字开头
在JavaScript中,从代码易于维护的角度来看,以下哪些变量名比较合适?

a1
b2
n234oouj
name
number
age
schoolName

name number age schoolName
# 这些变量名定义做到了见名知意

逻辑运算

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

var a = 11
var b = 6
if(__(a
以下JavaScript代码运行的预期输出结果是?

var num = 55
var str = "55"
if(num === str) {
    console.log("Yes")
} else {
    console.log("No")
}
预期输出结果:
____
No
# ===这个是恒等于,要求变量类型和值都相等,显然类型不同
以下JavaScript代码运行的预期输出结果是?

var res1 = 5 > 8
var res2 = true
if(res1 && res2) {
    console.log("Yes")
} else {
    console.log("No")
}
预期输出结果:
____
No
# &&表示与操作,该符号两边都为true才为true,显然res1结果为false
以下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是表达式5 > 8的结果,即为false。变量res2为true。然后对res1和res2进行与操作,因为res1为false,所以res1 && res2的结果也为false。与运算,当其中任何一个操作数为false时,该运算的结果为false,只有当两个操作数都为true时,其运算结果才为true
以下JavaScript代码运行的预期输出结果是?

var num = 8
if(true || (num = 9)) {
    console.log(num)
}

预期输出结果:
____
8
# 这里涉及到逻辑运算的短路机制,对于或运算,当第一个操作数是true时,该运算的结果是true,第二个操作数不会被求值(如果是表达式的话就不会被执行)

隐式类型转换

以下代码的预期输出是?

var arr = [] 
var str 
if (arr) { 
    str = 'hello' 
} 
console.log(str) 

预期输出: 
____
hello
# 空数组转换成布尔值为true,所以变量str会被赋值为hello
# 非空即为真 非0即为真
'''
字符串:非空即为真
数字:非0非NAN即为真
对象:非null非undefined即为真
[]{}为真
'''
要想是一下JavaScript代码运行符合预期,空格处应该填什么运算符?

var a = true 
var b = 2 
var c = a ___ b 
console.log(c) 

预期输出: 
2
*
# 这里输出2,只有b的值为2那么c只能等于a*b,a=true就呗隐式转换为1,所以c=1*2
以下JavaScript代码运行的预期输出结果是?

var res = 567 + '1' - 89
console.log(res) 

预期输出: 
____
5582
# 数字类型和字符串中间的+号不再是加法运算,而是拼接,数值类型被转换成字符串类型,567+'1'=5671,然后5671-89
以下JavaScript代码运行的预期输出结果是?

if (null) {
    console.log('Hello')
} else {
    console.log('World')
}

预期输出: 
____
World
# 非空就是真
以下JavaScript代码运行的预期输出结果是?

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

预期输出: 
____
Hello
# 自定义对象为空也为真

条件分支

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

var a = 8 
if (a > 7) { 
    a = 3 
} 
if (a > 4) { 
    a = 5 
} 
console.log(a)
3
要想以下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
# 这里填5,因为break再6后面,然后输出的是5和6中的内容
以下JavaScript代码运行的预期输出结果是?

var num = 89
if (num < 89) {
    console.log('a')
} else if (num > 89) {
    console.log('b')
} else {
    console.log('c')
}
预期输出: 
____
c
# 条件判断都不满足,输出else下的内容
以下JavaScript代码运行的预期输出结果是?

if (8 > 7) {
    console.log('Hello')
} else {
    console.log('World')
}
预期输出: 
____
Hello
以下JavaScript代码运行的预期输出结果是?

if (78 < 67) {
    if (45 > 23) {
        console.log('a')
    } else {
        console.log('b')
    }
} else {
    if (89 > 45) {
        console.log('c')
    } else {
        console.log('d')
    }
}
预期输出: 
____
c

For循环

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

for (var i=0; i <= ___; i++) {
    console.log(i)
}
预期输出结果: 0 1 2 3 4 5 
5
# 结果包含5,那么条件判断只能填5
想要以下代码运行符合预期则空格处应该填什么整型数字?

for (var i=1; i <= ___; i+=1) {
    console.log(i)
} 
预期输出结果:1 2 3 4 5 6 7 8 9
9
# 结果包含9,条件判断填9
想要以下代码运行符合预期则空格处应该填什么整型数字?

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
# 根据结果发现,间隔为3
想要以下代码运行符合预期则空格处应该填?

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恒等于email才能取到email的值
想要以下代码运行符合预期则空格处应该填什么整数?

for (var i=4; i<9; i+=___) {
    console.log(i)
}
预期输出: 
4
7

3
# 根据结果发现,间隔为3

Math内置对象

方法名称 作用 示例 结果
max() 用于确定一组数值中的最大值 Math.max(11,3,17,6) 17
min() 用于确定一组数值中的最小值 Math.min(11,3,17,6) 3
ceil() 执行向上取整,即它总是将数值向上取整为最接近的整数 Math.ceil(25.1) 26
floor() 执行向下取整,即它总是将数值向下取整为最接近的整数 Math.floor(25.8) 25
round() 执行标准取整,即它总是将数值四舍五入为最接近的整数 Math.round(25.8) 26
random() 该方法返回介于 0 到 1 之间一个随机小数,包括 0 和不包含 1 Math.random() 例如0.3123868992708143
abs() 该方法返回参数的绝对值 Math.abs(-9) 9
sqrt() 该方法返回参数的平方根 Math.sqrt(49) 7
表达式 Math.____(13.6589)计算结果为13,则空格处应该填?
floor
# 结果是取整了,而且还是向下取整,所以填13
# 如果结果为14,那么方法就是ceil
要想以下JavaScript代码符合预期,空格处应该填什么(表达式除外)?(使用中文逗号「,」隔开)

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

abs,sqrt
# 结果为正,首先将负数取绝对值,填abs,然后c=144,那么c开平方就是12,填sqrt
要想以下JavaScript代码符合预期,空格处应该填什么整数?

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

81
# 81开平方得9
要想以下JavaScript代码符合预期,空格处应该填什么(表达式除外)?

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

max
# 输出了最大值填max
要想以下JavaScript代码符合预期,空格处应该填什么(表达式除外)?

console.log(Math.____(8.01))
预期输出结果:
9
ceil
# 结果是向上取整了,填ceil

对象属性

  • 考点是对象取值
    • 点方法取值
    • obj[属性]取值
    • 索引取值
要想以下JavaScript代码符合预期,空格处应该填什么(表达式除外)?

var obj = {name: 'lisi', city: '北京', age: 21}
console.log(obj._______)

// 预期输出结果:21
age
要想以下JavaScript代码符合预期,空格处应该填什么字符串?

var obj = {id: 1, title: 'React-JSX语法', lengtth: "120", created_at: "2021-07-01", created_staf: "张三"}
var adminName = '_______'
console.log(obj[adminName])
预期输出结果:
张三

created_staf
要想以下JavaScript代码符合预期,空格处应该填什么?

var obj = {
    name: '李四',
    school: '北京大学',
    age: 23
}
console.log(obj.____)
预期输出结果:
北京大学

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

var obj = {
    name: '王五',
    friends: ['张三', '李四'],
    age: 23
}

console.log(obj.friends[____])
预期输出结果:
李四

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

var obj = {
    name: '小明',
    friends: ['张三', '李四'],
    hobby: ['篮球', '足球', '游泳', '看书'],
    age: 23
}

console.log(obj.name + '喜欢' + obj.____[1])

预期输出结果:
小明喜欢足球

hobby

函数定义与调用

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

function foo(a, b) { 
    return a * b 
} 
console.log(foo(8, ___)) 
预期输出: 
32

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

function foo(a) { 
    return a * a * a 
} 
console.log(foo(___)) 
预期输出: 
27

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

var obj = {
    name: '小明',
    friends: ['张三', '李四'],
    hobby: ['篮球', '足球', '游泳', '看书'],
    age: 23,
    getNewFriend: function (newFriend) {
        this.friends.push(newFriend)
    }
}

obj._______('王五')

console.log(obj.friends[2])

预期输出: 
王五

getNewFriend
# 这里定义了一个obj对象,其中一个属性的值是一个函数,那么在取这个属性值的时候,后面加上()就代表调用这个函数。这个函数(我们可以称之为这个对象的方法)的作用是将它的参数追加到该对象的friends属性值(数组)的末尾。我们看预期输出的打印是obj这个对象的friends属性值的索引为2的值,而friends属性在这个对象被定义的时候最大索引是1,显然它被push进了一个值。由此可知空格处该填什么了。
以下的JavaScript代码的预期输出是?

var checkNum = function (num) {
    return num % 2 === 0
}
if (checkNum(8)) {
    console.log('Hello')
} else {
    console.log('World')
}

预期输出: 
____

Hello
以下的JavaScript代码的预期输出是?

var checkNum = function (num, divisor) {
    return num % divisor === 0
}
if (checkNum(27, 5)) {
    console.log('Hello')
} else {
    console.log('World')
}

预期输出: 
____

World
# 我们将一个函数表达式赋值给了checkNum变量,后面就可以使用checkNum来调用这个函数了。这个函数接受两个参数(num,divisor)并返回一个布尔值(真假值),这个布尔值取决于num对divisor取余是否等于0。简单来说,这个函数的作用是判断参数num是否能被divisor整除。

常见内置对象

内置对象 说明 示例
eval eval函数会将传入的字符串当做 JavaScript 代码进行执行 eval("console.log('hello world')")
isNaN 用来确定一个值是否为NaN isNaN(NaN); // true
isNaN(undefined); // true
isNaN({}); // true
parseFloat 根据给定的参数返回其对应的浮点数。 parseFloat(3.14);
parseInt 解析一个字符串并返回指定基数的十进制整数 parseInt("15,123", 10);
要想以下JavaScript代码运行符合预期,空格处应该填什么?

if (isNaN('.67') === ___) { 
    console.log('hello') 
} 

预期输出: 
hello 

false
要想以下JavaScript代码运行符合预期,空格处应该填什么整数?

console.log(parseInt("21", ____))
预期输出: 
17

8
# 21的8进制数为17
以下的JavaScript代码的预期输出是?

console.log(parseFloat('8.9a89bd'))
预期输出:
____

8.9
以下的JavaScript代码的预期输出是?

if (isNaN('3e4') === false) {
    console.log('Hello')
} else {
    console.log('World')
}

预期输出: 
____
Hello

转义字符

要想以下JavaScript代码运行符合预期,空格处需要填写什么?

var str = ________ 
console.log(str) 

预期输出: 
小明说:"吃饭吗?" 
我说:"已经吃过了"

# 可以看出这连个字符串中间的引号原样输出了,那么用到转义字符\,中间还有换行的标志\n

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

var str = '\'这是为什么呢?\''
console.log(str)
预期输出: 
____
'这是为什么呢?'

# 转义字符将单引号原样输出
以下的JavaScript代码的预期输出是?

var str = '\"这是为什么呢?"'
console.log(str)
预期输出: 
____
"这是为什么呢?"
# 在单引号定义的字符串中出现了双引号,可以直接使用,不会报语法错误。并且双引号前加转义符(\)和不加效果一样。
以下的JavaScript代码的预期输出是?

var str = '\\n这是为什么呢?"'
console.log(str)
预期输出: 
____
\n这是为什么呢?"

字符串常见的方法与属性

属性名称 作用 示例 结果
length 获取字符串入的长度 'abcd'.length 4
方法名称 作用 示例 结果
charAt() 获取指定位置的字符 'abcd'.charAt(2) c
indexOf() 检索指定的字符串值在字符串中首次出现的位置 'abcd'.indexOf('a') 0
lastIndexOf() 从后往前查询所要搜索的字符串在原字符串中第一次出现的位置(索引),找不到则返回-1 'abcdabc'.lastIndexOf('a') 4
search() 检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串 'abcd'.search('c') 2
match() 字符串内检索指定的值,或找到一个或多个正则表达式的匹配 'abcdabc'.match('a') ['a', index: 0, input: 'abcdabc']
substring() 字符串截取方法,它可以接收两个参数,分别是要截取的开始位置和结束位置,它将返回一个新的字符串 'abcdabc'.substring(1, 4) bcd
slice() 与substring()方法非常类似,它传入的两个参数也分别对应着开始位置和结束位置。而区别在于,slice()中的参数可以为负值 'abcdabc'.slice(1, 4) bcd
replace() 用来进行字符串替换操作,它可以接收两个参数,前者为被替换的子字符串,后者为用来替换的文本 'abcd'.replace('a', 'A') Abcd
split() 于把一个字符串分割成字符串数组 'abcd'.split('') ['a', 'b', 'c', 'd']
toLowerCase() 可以把字符串中的大写字母转换为小写 'Abcd'.toLowerCase() abcd
toUpperCase() 可以把字符串中的小写字母转换为大写 'Abcd'.toUpperCase() ABCD
要想以下JavaScript代码符合预期,空格处应该填什么?

var a = "abccba"._______("b")
console.log(a)
预期输出结果:
4

lastIndexOf
# 输出b字符的下标位置,正向肯定不行了为1,那么使用lastIndexOf倒着取
要想以下JavaScript代码符合预期,空格处应该填什么?

var str = "a1-b2-c3-d4"
console.log(str._____('-'))
预期输出结果:
['a1', 'b2', 'c3', 'd4']

split
# split把一个字符串分割成字符串数组,指定分隔符为-
要想以下JavaScript代码符合预期,空格处应该填什么整数?

var str = "JavaScript是一门动态类型的语言"
console.log(str.substring(4, ____))
预期输出结果:
Script

10
# substring字符串截取方法,它可以接收两个参数,分别是要截取的开始位置和结束位置,它将返回一个新的字符串,4为开始位置结束位置为10正好取出Script
以下的JavaScript代码的预期输出是?

var str = "AbcDe"
console.log(str.toUpperCase())
预期输出结果:
____

abcde
# 转大写方法
以下的JavaScript代码的预期输出是?

var str = "Chinese"
console.log(str.charAt(3))
预期输出结果:
____

n
# charAt方法指定了下标位置,输出该索引值的元素 

数组常见方法与属性

方法 说明
length 访问一个数组的length属性,返回该数组的长度,即该数组元素的个数
forEach() 对数组的每个元素执行一次给定的函数
indexOf() 返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
join() 将一个数组的所有元素连接成一个字符串并返回这个字符串。如果数组只有一个项目,那么将返回该项目而不使用分隔符。
map() 创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
pop() 从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。
push() 将一个或多个元素添加到数组的末尾,并返回该数组的新长度。
reverse() 将数组中元素的位置颠倒,并返回该数组。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。该方法会改变原数组。
shift() 从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
slice() 返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。
sort() 对数组的元素进行排序,并返回数组。
unshift() 将一个或多个元素添加到数组的开头,并返回该数组的新长度(该方法修改原有数组)。
要想以下JavaScript代码符合预期,空格处应该填什么(表达式除外)?

var arr = ['e', 'd', 'f'] 
var str = arr.___() 
console.log(str) 

预期输出结果: e,d,f

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

var arr = ['tree', 795, [0, 1, 2]]; 
arr.______([4,9,10]) 
console.log(arr[0][1]) 

预期输出结果: 9

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

var arr = [1,2,3,'a','t',45,'r',9]; 
var newArr = arr.slice(____, 6) 
console.log(newArr[2])

预期输出结果: 
45

3
# 数组的slice方法会截取原数组的一部分并返回出来。从slice的第一个参数所表示的索引位置的元素(包含该元素)开始,到第二个参数所代表的索引位置的元素(不包含该元素)结束。该题中newArr[2]的值为45,又因为newArr是从arr中截取出来的,所以newArr应该为['a', 't', 45]
要想以下JavaScript代码符合预期,空格处应该填什么(表达式除外)?

var arr = ['a', 'b', 'c', 'd']; 
var str = arr.______().join('')
console.log(str) 

预期输出结果: 
dcba

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

var arr = [
    {
        name: '张三',
        age: 24
    },
    {
        name: '李四',
        age: 32
    },
    {
        name: '王五',
        age: 19
    }
]

arr.sort(function (item1, item2) {
    return item1.age - item2.age
})

console.log(arr[____].name)

预期输出结果: 
李四

2

# 数组的sort方法会接受一个回调函数作为参数,并且会给这个回调函数传两个值,这两个值即为数组中相邻两个元素,如果这个回调函数返回的是一个小于0的数,那么第一个值就在第二值的前面,等于0的话就不变,大于0的话,第一个值就在第二个值的后面。题中的回调函数的返回值是第一个值的age属性减去第二个值的age属性,如果小于0,item1就在item2前面,反之就在后面。由此可见,就是按照该数组中每一个元素的age的值做升序排列。所以,排序后的数组,0索引位置的值是王五这个对象,1索引位置的值是张三这个对象,2索引位置的值是李四这个对象

相关