进来做几道 JavaScript 基础题找找自信?
Posted 前端开发博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进来做几道 JavaScript 基础题找找自信?相关的知识,希望对你有一定的参考价值。
关注公众号 前端开发博客,领27本电子书
回复加群,自助秒进前端群
天天推送各种框架和库的,看起来也挺累的。。。今天放松一下,做几道 javascript
基础题找找自信吧!
第1题 — 原型
function Animal()
this.type = "animal"
function Dog()
this.name = "dog"
Dog.prototype = new Animal()
var PavlovPet = new Dog();
console.log(PavlovPet.__proto__ === Dog.prototype)
console.log(Dog.prototype.__proto__ === Animal.prototype)
console.log
打印出的值是?
第2题 — 小心“排序”
var arr = [5, 22, 14, 9];
console.log(arr.sort());
console.log
打印出的值是?
第3题 — 异步循环
for (let i = 0; i < 3; i++)
const log = () =>
console.log(i)
setTimeout(log, 100)
console.log
打印出的值是?
第4题 — numbers里面有啥?
const length = 4
const numbers = []
for (var i = 0; i < length; i++);
numbers.push(i + 1)
console.log(numbers)
console.log
打印出的值是?
第5题 — 长度为0
const clothes = ['shirt', 'socks', 'jacket', 'pants', 'hat']
clothes.length = 0
console.log(clothes[3])
console.log
打印出的值是?
第6题 — 变量定义
var a = 1
function output ()
console.log(a)
var a = 2
console.log(a)
console.log(a)
output()
console.log(a)
console.log
打印出的值是?
第7题 — 找到值了吗
function foo()
let a = b = 0
a++
return a
foo()
console.log(typeof a)
console.log(typeof b)
console.log
打印出的值是?
第8题 — 类型转换
console.log(+true)
console.log(!"ConardLi")
console.log
打印出的值是?
第9题 — ESM
// module.js
export default () => "Hello world"
export const name = "c"
// index.js
import * as data from "./module"
console.log(data)
console.log
打印出的值是?
第10题 — 对象做 key
const a = ;
const b = key: "b" ;
const c = key: "c" ;
a[b] = 123;
a[c] = 456;
console.log(a[b]);
console.log
打印出的值是?
答案 - 第1题
把原型的基础知识记清楚这道题就错不了:
所有的对象都有
[[prototype]]
属性(通过_proto_
访问),该属性对应对象的原型;所有的函数对象都有prototype
属性,该属性的值会被赋值给该函数创建的对象的_proto_
属性。
答案是:
true
true
答案 - 第2题
抱歉,答案不是 [5, 9, 14, 22]
。如果不传入排序函数,sort
函数会将每个元素转换成字符串,然后根据它们的 UTF-16
值排序。
答案是:
[14, 22, 5, 9]
答案 - 第3题
这题我会,因为:
定时器是异步执行,浏览器会优先执行同步任务,在遇到定时器时会先把它们暂存在一个宏任务队列中,待当前宏任务队列的所有任务执行完毕后才会去执行队列中的任务,此时循环已执行完毕,i 已经是 3。
所以答案是:
0
1
2
哎不对?答案为啥不是 3、3、3
?
因为循环里的 i
是用 let
声明的,而不是用 var
声明的!
let
声明的变量拥有块级作用域。即在 for
循环或 if
中用 let
定义变量,在外面是访问不到的。
形如 for (let i...)
的循环在每次迭代时都为 i 创建一个新变量,并以之前迭代中同名变量的值将其初始化,所以上面的代码实际上相当于:
for (let i = 0)
const log = () =>
console.log(i)
setTimeout(log, 100)
for (let i = 1)
const log = () =>
console.log(i)
setTimeout(log, 100)
for (let i = 2)
const log = () =>
console.log(i)
setTimeout(log, 100)
答案 - 第4题
要看仔细啊,看到小括号和大括号之间有个;
吗?
答案是:
[5]
答案 - 第5题
将数组的长度赋值为 0
就相当于从数组中删除所有元素。
答案是:
undefined
答案 - 第6题
第一个输出:全局的
var a
第二个输出:
output
函数中声明的var a
变量提升,还未赋值第三个输出:
output
函数局部作用域的 a 已赋值第四输出:全局的
var a
没有变
答案是:
1
undefined
2
1
答案 - 第7题
let a
是一个局部变量。typeof a
检查的是未声明的变量。
b
是个全局变量,它在 foo
函数中被赋值。
答案是:
undefined
number
答案 - 第8题
+
运算符首先会尝试将 boolean
类型转换为数字类型,true
被转换为 1
,false
被转换为 0
。
字符串 'ConardLi'
是一个真值,所以 !'ConardLi'
为 false。
答案是:
1
false
答案 - 第9题
考察下你对 ES Module
的认识
答案是:
default: function default(), name: "c"
答案 - 第10题
对象能做对象的 key 吗?当然不能,两次赋值实际上是:
a["Object object"] = 123;
a["Object object"] = 456;
答案是:
456
怎么样,找到自信了吗?💯💯💯 全对的来这里集合!!!
- EOF -
推荐阅读 点击标题可跳转
最后
我是小前端,欢迎大家围观我的朋友圈,搞搞技术,吹吹牛逼。我的微信:kujian89,秒添加,回复加群,可以进入 500人前端群。
关注公众号:前端开发博客
回复「小抄」,领取Vue、JavaScript 和 WebComponent 小抄 PDF
回复「Vue脑图」获取 Vue 相关脑图
回复「思维图」获取 JavaScript 相关思维图
回复「简历」获取简历制作建议
回复「简历模板」获取精选的简历模板
回复「加群」进入500人前端精英群
回复「电子书」下载我整理的大量前端资源,含面试、Vue实战项目、CSS和JavaScript电子书等。
回复「知识点」下载高清JavaScript知识点图谱
👍🏻 点赞 + 在看 支持小编
以上是关于进来做几道 JavaScript 基础题找找自信?的主要内容,如果未能解决你的问题,请参考以下文章