草庐IT

前端面试题 JavaScript 基础 —— 2022-09-03

既明的前端进阶 2023-03-28 原文

每日 3 题

13 以下代码执行后,控制台中的输出内容为?

Object.prototype.a = 1;
Function.prototype.b = 2;
function F() {}
var f = new F();
console.log(F.a);
console.log(F.b);
console.log(f.a);
console.log(f.b);

14 以下代码执行后,控制台中的输出内容为?

var a = 2 >= 3 || true && 1 || false;
console.log(a);

15 以下代码执行后,控制台中的输出内容为?

var x = 0;
switch (++x) {
  case 0:
    ++x;
  case 1:
    ++x;
  case 5:
    ++x;
}

console.log(x);

答案及解析

13

// 答案:1 2 1 undefined
// 考察原型链

// 首先对于 Function,这里有几个特殊的点
console.log(typeof Function); // function
console.log(Function.__proto__ === Function.prototype); // true
console.log(Function.prototype.__proto__ === Object.prototype); // true
// 自己动手跑一下记住结果即可

Object.prototype.a = 1; // 在原型对象上添加属性并赋值
Function.prototype.b = 2; // 同上
function F() {}
var f = new F();

// 下面捋一下原型链,"=>" 代表指向
console.log(F.a);
// F.__proto__ => Function.prototype,Function.prototype.__proto__ => Object.prototype
// 顺着原型链找属性 a 即可,找到 Object.prototype.a 为 1

console.log(F.b);
// 原型链同上,找到 Function.prototype.b 为 2

console.log(f.a);
// f.__proto__ => F.prototype
// 注意 F.prototype 只是个普通对象,所以 F.prototype.__proto__ => Object.prototype
// 顺着原型链找属性 a,找到 Object.prototype.a 为 1
console.log(f.b);
// 原型链同上,找不到属性 b,所以结果为 undefined

// 注意 f 和 F 的原型链的区别

14

// 答案:1
// 考察 && 和 || 的优先级以及运算符的理解
// && 的优先级高于 ||
// 故先计算 true && 1
console.log(true && 1); // 问:输出什么

// 答案是 1,回答 true 的对 && 的理解有误
// 对于 expr1 && expr2
// 如果 expr1 能够转化为 true,表达式返回 expr2,否则返回 expr1

// 同理 expr1 || expr2
// 如果 expr1 能够转化为 true,表达式返回 expr1,否则返回 expr2

var a = 2 >= 3 || true && 1 || false;
// 综上,一步一步计算如下
//   (2 >= 3 || true && 1 || false)
// = (2 >= 3 || 1 || false)
// = (1 || false)
// = 1

console.log(a);

15

// 答案:3
// 考察:switch 和 ++
// 首先 ++ 在前会先计算自增 1
// 对于 case 中没有 break 时,匹配到 case 会一直向下计算直到遇到 break
var x = 0;
switch (++x) { // 首先计算括号中式子:结果为 1
  case 0: ++x; // 1 不匹配 0
  case 1: ++x; // 匹配,计算后 x 为 2,并且没有 break,继续向下计算
  case 5: ++x; // 计算 ++x,计算后 x 为 3
}

console.log(x); // 故最终输出 3

有关前端面试题 JavaScript 基础 —— 2022-09-03的更多相关文章

  1. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  2. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  3. Hive SQL 五大经典面试题 - 2

    目录第1题连续问题分析:解法:第2题分组问题分析:解法:第3题间隔连续问题分析:解法:第4题打折日期交叉问题分析:解法:第5题同时在线问题分析:解法:第1题连续问题如下数据为蚂蚁森林中用户领取的减少碳排放量iddtlowcarbon10012021-12-1212310022021-12-124510012021-12-134310012021-12-134510012021-12-132310022021-12-144510012021-12-1423010022021-12-154510012021-12-1523.......找出连续3天及以上减少碳排放量在100以上的用户分析:遇到这类

  4. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  5. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  6. ruby - 在 Mechanize 中使用 JavaScript 单击链接 - 2

    我有这个:AccountSummary我想单击该链接,但在使用link_to时出现错误。我试过:bot.click(page.link_with(:href=>/menu_home/))bot.click(page.link_with(:class=>'top_level_active'))bot.click(page.link_with(:href=>/AccountSummary/))我得到的错误是:NoMethodError:nil:NilClass的未定义方法“[]” 最佳答案 那是一个javascript链接。Mechan

  7. 映宇宙2022年营收63亿元:同比下降三成,毛利率提升4.3个百分点 - 2

    3月26日,映宇宙(HK:03700,即“映客”)发布截至2022年12月31日的2022年度业绩财务报告。财报显示,映宇宙2022年的总营收为63.19亿元,较2021年同期的91.76亿元下降31.1%。2022年,映宇宙的经营亏损为4698.7万元,2021年同期则为净利润4.57亿元;期内亏损(净亏损)为1.68亿元,2021年同期的净利润为4.33亿元;非国际财务报告准则经调整净利润为3.88亿元,2021年同期为4.82亿元,同比下降19.6%。 映宇宙在财报中表示,收入减少主要是由于行业竞争加剧,该集团对旗下产品采取更为谨慎的运营策略以应对市场变化。不过,映宇宙的毛利率则有所提升

  8. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  9. javascript - jQuery 的 jquery-1.10.2.min.map 正在触发 404(未找到) - 2

    我看到有关未找到文件min.map的错误消息:GETjQuery'sjquery-1.10.2.min.mapistriggeringa404(NotFound)截图这是从哪里来的? 最佳答案 如果ChromeDevTools报告.map文件的404(可能是jquery-1.10.2.min.map、jquery.min.map或jquery-2.0.3.min.map,但任何事情都可能发生)首先要知道的是,这仅在使用DevTools时才会请求。您的用户不会遇到此404。现在您可以修复此问题或禁用sourcemap功能。修复:获取文

  10. ruby-on-rails - 我将 Rails3 与 tinymce 一起使用。如何呈现用户关闭浏览器javascript然后输入xss? - 2

    我有一个用Rails3编写的站点。我的帖子模型有一个名为“内容”的文本列。在帖子面板中,html表单使用tinymce将“content”列设置为textarea字段。在首页,因为使用了tinymce,post.html.erb的代码需要用这样的原始方法来实现。.好的,现在如果我关闭浏览器javascript,这个文本区域可以在没有tinymce的情况下输入,也许用户会输入任何xss,比如alert('xss');.我的前台会显示那个警告框。我尝试sanitize(@post.content)在posts_controller中,但sanitize方法将相互过滤tinymce样式。例如

随机推荐