七、对象属性
(1)要想以下JavaScript代码符合预期,空格处应该填什么(表达式除外)?
var obj = {name: 'lisi', city: '北京', age: 21} console.log(obj._______) // 预期输出结果:21
答案:age
在对象中对象的变量点方式可以是查询或者添加一个属性,预期结果为21;对象中的age属性对应的值为21,那么获取这个属性就得到了它对应的值。
(2)要想以下JavaScript代码符合预期,空格处应该填什么整数?
var obj = { name: '王五', friends: ['张三', '李四'], age: 23 } console.log(obj.friends[____]) //预期输出结果:李四
答案:1
obj这个对象的friends属性是一个数组,现在要打印这个数组的某一个索引上的值,打印结果是李四,李四是数组的第一项(数组下标从0开始)
八、函数定义与调用
(1)要想以下JavaScript代码符合预期,空格处应该填什么整型数字?
function foo(a, b) { return a * b } console.log(foo(8, ___)) //预期输出:32
答案:4
该函数有两个参数:a,b。函数执行的时候返回 a * b的值,函数调用时,给出了第一个参数值为8,最终返回32,所以第二个参数是4。
(2)要想以下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进了一个值。由此可知空格处该填什么了。
(3)以下的JavaScript代码的预期输出是?
var checkNum = function (num) { return num % 2 === 0 } if (checkNum(8)) { console.log('Hello') } else { console.log('World') } //预期输出:____
答案:Hello
将一个函数表达式赋值给了checkNum变量,后面就可以使用checkNum来调用这个函数了;
除以2取余为0,简单来说,这个函数的作用是判断参数是否是一个偶数。
九、常见内置函数
(1)要想以下JavaScript代码运行符合预期,空格处应该填什么?
if (isNaN('.67') === ___) { console.log('hello') } //预期输出:hello
答案:false
isNaN函数当参数是一个数字或者数字字符串的时候,返回真,其他返回假;
在大多数编程语言中,0.89这样的小数也可以使用.89来表示,省略掉0。
(2)要想以下JavaScript代码运行符合预期,空格处应该填什么整数?
console.log(parseInt("21", ____)) //预期输出:17
答案:8
parseInt这个内置函数会把第一个参数按照第二个参数指定的基数(或者说是进制)转成一个十进制整数并返回;
现在第一个参数是"21",最终转成的10进制数是17,而八进制下的21就是10进制下的17。
(3)以下的JavaScript代码的预期输出是?
console.log(parseFloat('8.9a89bd')) //预期输出:____
答案:8.9
parseFloat会将给定的字符串转成一个浮点数,从给定的字符串的右边开始,一个一个字符的比对,直到不能构成一个有效的浮点数为止。
(4)以下的JavaScript代码的预期输出是?
if (isNaN('3e4') === false) { console.log('Hello') } else { console.log('World') } //预期输出:____
答案:Hello
isNaN内置函数是判断一个字符串是否不是一个数字;此处 3e4 是一个数字,所以isNaN返回false,false===false。
在JavaScript中数字的表示有很多种,例如十进制的整数,十进制的小数,科学计数法(例如:4e20表示4 乘以 10的20次方),十六进制表示法(例如:0x13af),八进制表示法(例如:012)等。
十、字符串定义与转义字符
(1)以下的JavaScript代码的预期输出是?
var str = '\'这是为什么呢?\'' console.log(str) //预期输出:____
答案:'这是为什么呢?'
在单引号定义的字符串中出现了单引号,但是单引号前面使用了反斜杠\,即该单引号被转义了,那么这个单引号在该字符串中直接作为一个单引号存在;
在单引号定义的字符串中使用单引号,如果不做转义将会报语法错误。
(2)以下的JavaScript代码的预期输出是?
var str = '\"这是为什么呢?"' console.log(str) //预期输出:____
答案:"这是为什么呢?"
在单引号定义的字符串中出现了双引号,可以直接使用,不会报语法错误。并且双引号前加转义符(\)和不加效果一样。
(3)以下的JavaScript代码的预期输出是?
var str = '\\n这是为什么呢?"' console.log(str) //预期输出:____
答案:\n这是为什么呢?"
转义符本身也能被转义,转义后就被当成一个普通的反斜杠字符(\)使用,不再具有转义的效果。
十一、字符串常见的方法和属性
(1)要想以下JavaScript代码符合预期,空格处应该填什么?
var a = "abccba"._______("b") console.log(a) //预期输出结果:4
答案:lastIndexOf
该题属于根据字符串返回它在整个字符串索引位置的题型,如果使用indexOf()方法则结果是1,那么另外一个方法lastIndexOf()则返回符合预期输出结果,意思就是b位于索引位置4。
(2)要想以下JavaScript代码符合预期,空格处应该填什么?
var str = "a1-b2-c3-d4" console.log(str._____('_')) //预期输出结果:['a1', 'b2', 'c3', 'd4']
答案:split
split切割,根据代码及预期结果可知字符串转为了数组,故字符串使用切割函数。
(3)要想以下JavaScript代码符合预期,空格处应该填什么整数?
var str = "JavaScript是一门动态类型的语言" console.log(str.substring(4, ____)) //预期输出结果:Script
答案:10
字符串的substring方法是截取原字符串的一部分。截取的规则是从第一个参数表示的索引位置开始(包含该字符),到第二个参数表示的索引为止结束(不包含该位置字符)。
如果 第一个参数 等于 第二个参数,substring 返回一个空字符串。
如果省略 第二个参数,substring 提取字符一直到字符串末尾。
如果任一参数小于 0 或为 NaN,则被当作 0。
如果任一参数大于 str.length,则被当作 str.length。
如果 第一个参数 大于 第二个参数,则 substring 的执行效果就像两个参数调换了一样。
(4)以下的JavaScript代码的预期输出是?
var str = "AbcDe" console.log(str.toUpperCase()) //预期输出结果:____
答案:ABCDE
字符串的toUpperCase方法是将该字符串中的所有英文字母转成大写。
(5)以下的JavaScript代码的预期输出是?
var str = "Chinese" console.log(str.charAt(3)) //预期输出结果:____
答案:n
字符串的charAt方法的参数会被作为索引,最终会返回字符串中该索引所对应的位置的值。
十二、数组常见方法与属性
(1)要想以下JavaScript代码符合预期,空格处应该填什么(表达式除外)?
var arr = ['e', 'd', 'f'] var str = arr.___() console.log(str) //预期输出结果: e,d,f
答案:join
在数组上调用一个方法,返回一个字符串,并且这个字符串是数组里面的每个元素以逗号相连。就是将数组的每个元素连接起来,join方法正好能实现此功能。
join方法在不给参数的时候就是以英文的逗号连接数组的每个元素。
(2) 要想以下JavaScript代码符合预期,空格处应该填什么(表达式除外)?
var arr = ['tree', 795, [0, 1, 2]]; arr.______([4,9,10]) console.log(arr[0][1]) //预期输出结果: 9
答案:unshift
arr[0][1]是指数组arr索引为0的值,再取其索引为1的值。
如果arr[0]的值为[4,9,10],则arr[0][1]的值为9。
所以该数组方法就是将参数[4,9,10]加到数组arr的开头,unshift能实现此功能。
(3)要想以下JavaScript代码符合预期,空格处应该填什么(表达式除外)?
var arr = [1,2,3,'a','t',45,'r',9]; var newArr = arr.slice(____, 6) console.log(newArr[2]) //预期输出结果:45
答案:3
slice方法会截取原数组的一部分并返回,第一个参数表示开始的索引位置的元素(包含该元素),第二个参数代表结束的索引位置的元素(不包含该元素);
该题中newArr[2]的值为45,又因为newArr是从arr中截取出来的,所以newArr应该为['a', 't', 45]
(4)要想以下JavaScript代码符合预期,空格处应该填什么(表达式除外)?
var arr = ['a', 'b', 'c', 'd']; var str = arr.______().join('') console.log(str) //预期输出结果:dcba
答案:reverse (翻转)
最终输出的是一个字符串,而join方法就是将数组中的元素用该方法的参数作为分隔符链接起来形成一个新的字符串,除此之外空格处的方法将数组arr进行了反转。
(5)要想以下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() 从小到大排序,sort方法会接受一个回调函数作为参数,并且会给这个回调函数传两个值,这两个值即为数组中相邻两个元素,如果这个回调函数返回的是一个小于0的数,那么第一个值就在第二值的前面,等于0的话不变,大于0的话,第一个值就在第二个值的后面;
题中的回调函数的返回值是第一个值的age属性减去第二个值的age属性,判断结果;最后做了升序排列,李四就位于索引位置3。