代码下面程序运行后输出的结果是结果为什么是这样的?

  • DOM 指的是文档对象模型,它指的是把文档当做一个对象,这个对象主要定义了处理网页内容的方法和接口。
  • BOM 指的是浏览器对象模型,它指的是把浏览器当做一个对象来对待,这个对象主要定义了与浏览器进行交互的法和接口。BOM的核心是 window,而 window 对象具有双重角色,它既是通过 js 访问浏览器窗口的一个接口,又是一个 Global(全局)对象。这意味着在网页中定义的任何对象,变量和函数,都作为全局对象的一个属性或者方法存在。window 对象含有 location

  1. 这个立即执行匿名函数表达式是由window调用的,this指向window 。立即执行匿名函数的作用域处于myObject.func的作用域中,在这个作用域找不到self变量,沿着作用域链向上查找self变量,找到了指向 myObject对象的self。

需要注意的是最后一个定时器打印出的p1其实是.finally的返回值,我们知道.finally的返回值如果在没有抛出错误的情况下默认会是上一个Promise的返回值,而这道题中.finally上一个Promise是.then(),但是这个.then()并没有返回值,所以p1打印出来的Promise的值会是undefined,如果在定时器的下面加上一个return

  1. Foo.getName(), Foo为一个函数对象,对象都可以有属性,b 处定义Foo的getName属性为函数,输出2;
  2. getName(), 这里看d、e处,d为函数表达式,e为函数声明,两者区别在于变量提升,函数声明的 5 会被后边函数表达式的 4 覆盖;
  3. getName(), 上面3中,全局的getName已经被重新赋值,所以这里依然输出 1;

选择排序--时间复杂度 n^2

题目描述:实现一个选择排序

// 定义 minIndex,缓存当前区间最小值的索引,注意是索引 // i 是当前排序区间的起点 // i、j分别定义当前区间的上下界,i是左边界,j是右边界 // 若 j 处的数据项比当前最小值还要小,则更新最小值索引为 j // 如果 minIndex 对应元素不是目前的头部元素,则交换两者

我们知道,在 JavaScript中, Function 和 var 都会被提升(变量提升),所以上面的代码就相当于:

这样,答案就一目了然了。

如何对项目中的图片进行优化?

  1. 不用图片。很多时候会使用到很多修饰类图片,其实这类修饰图片完全可以用 CSS 去代替。
  2. 对于移动端来说,屏幕宽度就那么点,完全没有必要去加载原图浪费带宽。一般图片都用 CDN 加载,可以计算出适配屏幕的宽度,然后去请求相应裁剪好的图片。
  3. 将多个图标文件整合到一张图片中(雪碧图)
    • 对于能够显示 WebP 格式的浏览器尽量使用 WebP 格式。因为 WebP 格式具有更好的图像数据压缩算法,能带来更小的图片体积,而且拥有肉眼识别无差异的图像质量,缺点就是兼容性并不好
    • 小图使用 PNG,其实对于大部分图标这类图片,完全可以使用 SVG 代替

(1)第一轮事件循环流程分析如下:

  • 整体script作为第一个宏任务进入主线程,遇到console.log,输出1。

上表是第一轮事件循环宏任务结束时各Event Queue的情况,此时已经输出了1和7。发现了process1then1两个微任务:

第一轮事件循环正式结束,这一轮的结果是输出1,7,6,8。

第二轮事件循环宏任务结束,发现有process2then2两个微任务可以执行:

第二轮事件循环结束,第二轮输出2,4,3,5。

(3)第三轮事件循环开始,此时只剩setTimeout2了,执行。

第三轮事件循环宏任务执行结束,执行两个微任务process3then3

第三轮事件循环结束,第三轮输出9,11,10,12。

整段代码,共进行了三次事件循环,完整的输出为1,7,6,8,2,4,3,5,9,11,10,12。

对于如何优化动画,我们知道,一般情况下,动画需要频繁的操作DOM,就就会导致页面的性能问题,我们可以将动画的position属性设置为absolute或者fixed,将动画脱离文档流,这样他的回流就不会影响到页面了。

回流与重绘的概念及触发条件

当渲染树中部分或者全部元素的尺寸、结构或者属性发生变化时,浏览器会重新渲染部分或者全部文档的过程就称为回流

下面这些操作会导致回流:

  • 浏览器的窗口大小发生变化
  • 元素的尺寸或者位置发生变化
  • 元素的字体大小发生变化
  • 查询某些属性或者调用某些方法
  • 添加或者删除可见的DOM元素

在触发回流(重排)的时候,由于浏览器渲染页面是基于流式布局的,所以当触发回流时,会导致周围的DOM元素重新排列,它的影响范围有两种:

  • 全局范围:从根节点开始,对整个渲染树进行重新布局
  • 局部范围:对渲染树的某部分或者一个渲染对象进行重新布局

当页面中某些元素的样式发生变化,但是不会影响其在文档流中的位置时,浏览器就会对元素进行重新绘制,这个过程就是重绘

下面这些操作会导致回流:

注意: 当触发回流时,一定会触发重绘,但是重绘不一定会引发回流。

什么叫函数柯里化?其实就是将使用多个参数的函数转换成一系列使用一个参数的函数的技术。还不懂?来举个例子。

现在就是要实现 curry 这个函数,使函数从一次调用传入多个参数变成多次调用每次传一个参数。

  1. 首先会进入Promise,打印出3,之后进入下面的Promise,打印出7;
  2. 遇到了定时器,将其加入宏任务队列;
  3. 遇到p.then,将其加入微任务队列,遇到first().then,将其加入任务队列;
  4. 执行外面的代码,打印出4;
  5. 这样第一轮宏任务就执行完了,开始执行微任务队列中的任务,先后打印出1和2;
  6. 这样微任务就执行完了,开始执行下一轮宏任务,宏任务队列中有一个定时器,执行它,打印出5,由于执行已经变为resolved状态,所以resolve(6)不会再执行;

可以用来表示一个独一无二的变量防止命名冲突。但是面试官问还有吗?我没想出其他的用处就直接答我不知道了,还可以利用 symbol 不会被常规的方法(除了 Object.getOwnPropertySymbols 外)遍历到,所以可以用来模拟私有变量。

主要用来提供遍历接口,布置了 symbol.iterator 的对象才可以使用 for···of 循环,可以统一处理数据结构。调用之后回返回一个遍历器对象,包含有一个 next 方法,使用 next 方法后有两个返回值 value 和 done 分别表示函数当前执行位置的值和是否遍历完毕。

箭头函数和普通函数有啥区别?箭头函数能当构造函数吗?

  • 普通函数通过 function 关键字定义, this 无法结合词法作用域使用,在运行时绑定,只取决于函数的调用方式,在哪里被调用,调用位置。(取决于调用者,和是否独立运行)
  • 箭头函数使用被称为 “胖箭头” 的操作 => 定义,箭头函数不应用普通函数 this 绑定的四种规则,而是根据外层(函数或全局)的作用域来决定 this,且箭头函数的绑定无法被修改(new 也不行)。
    • 箭头函数常用于回调函数中,包括事件处理器或定时器
    • 箭头函数和 var self = this,都试图取代传统的 this 运行机制,将 this 的绑定拉回到词法作用域
  • 不能通过 new 关键字调用
    • 一个函数内部有两个方法:[[Call]] 和 [[Construct]],在通过 new 进行函数调用时,会执行 [[construct]] 方法,创建一个实例对象,然后再执行这个函数体,将函数的 this 绑定在这个实例对象上
    • 当直接调用时,执行 [[Call]] 方法,直接执行函数体
    • 箭头函数没有 [[Construct]] 方法,不能被用作构造函数调用,当使用 new 进行函数调用时会报错。

这是一道关于闭包的题目,对于fun方法,调用之后返回的是一个对象。我们知道,当调用函数的时候传入的实参比函数声明时指定的形参个数要少,剩下的形参都将设置为undefined值。所以 console.log(o); 会输出undefined。而a就是是fun(0)返回的那个对象。也就是说,函数fun中参数 n 的值是0,而返回的那个对象中,需要一个参数n,而这个对象的作用域中没有n,它就继续沿着作用域向上一级的作用域中寻找n,最后在函数fun中找到了n,n的值是0。了解了这一点,其他运算就很简单了,以此类推。

渐进式网络应用(PWA)是谷歌在2015年底提出的概念。基本上算是web应用程序,但在外观和感觉上与原生app类似。支持PWA的网站可以提供脱机工作、推送通知和设备硬件访问等功能。

Service Worker是浏览器在后台独立于网页运行的脚本,它打开了通向不需要网页或用户交互的功能的大门。 现在,它们已包括如推送通知和后台同步等功能。 将来,Service Worker将会支持如定期同步或地理围栏等其他功能。 本教程讨论的核心功能是拦截和处理网络请求,包括通过程序来管理缓存中的响应。

10 个 Ajax 同时发起请求,全部返回展示结果,并且至多允许三次失败,说出设计思路

这个问题相信很多人会第一时间想到 Promise.all ,但是这个函数有一个局限在于如果失败一次就返回了,直接这样实现会有点问题,需要变通下。以下是两种实现思路

// 以下是不完整代码,着重于思路 非 Promise 写法
 // 失败次数大于3次就应该报错了
 // 失败次数大于3次就应该报错了

第1讲 程序设计与C语言

1.1 程序设计语言及其发展随堂测验

2、C语言源程序是用编译方式进行翻译的。

1.2 C语言的发展及其特点随堂测验

1.3 简单的C程序介绍随堂测验

3、1个C程序可以由1个或多个函数构成,但必须有1个函数名为main。

4、语句的结束标志是冒号“:”

5、C程序中1条语句必须写在一行。

1.4 C程序的上机步骤随堂测验

1、求两个数中的较小者。

第2讲 程序的数据描述——基本数据类型

2.1 C语言基本元素随堂测验

2.2 C语言数据类型随堂测验

2.3 常量和变量随堂测验

2、C语言中常量是没有类型之分的。

3、在程序运行期间,变量可以多次被赋值。

4、C程序中变量可以不定义而直接使用。

5、在程序运行过程中其值不能被改变的量称为:

2.4 整型数据随堂测验

4、1个有符号短整型数的最大正数是:

5、1个无符号短整型数的最大正数是:

2.5 实型数据随堂测验

2.6 字符型数据随堂测验

6、字符型数据在内容中占的字节数是:

7、'a'在内存中占的字节数是:

8、"a"在内存中占的字节数是:

第3讲 程序的数据运算

3.1 运算符与表达式随堂测验

4、赋值运算符的结合性为左结合。()

5、单目运算符、赋值运算符和条件运算符均为右结合性。( )

3.2 算术运算随堂测验

2、在C语言中,如果算术运算符(/)的运算对象中有一个是实型,则结果为双精度实型。()

3、在C语言中, 用算术运算符%求两个数相除的余数,要求两侧的运算对象必须为 数据。

3.3 赋值运算随堂测验

5、若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为 ,n的值为 。

3.4 自增和自减运算及强制类型转换随堂测验

3、C语言中用 表示逻辑“假”。

4、为表示关系x≥y≥z,应使用C语言表达式 。

1、判断1个五位正整数是否是对称数。

第4讲 顺序结构程序设计

4.1 程序的基本结构随堂测验

1、任何复杂的程序都是由逆序结构、选择结构、循环结构这三种结构构成的。

4.2 C语句概述随堂测验

4.3 字符数据输入输出随堂测验

4.4 数据格式化输入输出随堂测验

46、在C程序中,注释说明只能位于一条语句的后面。

47、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值为7。

48、在C 程序中,逗号运算符的优先级最低。

49、在C语言中char型数据在内存中的存储形式为ASCII码。

51、每个语句和数据定义的最后都必须有分号。

52、字符 '\0' 是字符串的结束标记,其ASCII代码为0。

53、算述运算*、/、+和一具有相同的优先级。

65、字符串常量 "ab\10823c" 在内存中的字节数是( )。

67、在C语言的赋值表达式中,赋值号左边必须是( )。

第5讲 选择结构程序设计

5.1 关系运算符和关系表达式随堂测验

5.2 逻辑运算符和逻辑表达式随堂测验

2、case与冒号之间可以是浮点类型数据

3、switch语句每个分支必须执行

5.5 条件运算符和条件表达式随堂测验

3、条件运算符符可以嵌套使用。

5.6 选择结构程序举例随堂测验

第6讲 循环结构程序设计

2、循环条件表达式不仅限于关系表达式和逻辑表达式,可以是任意类型的表达式。

3、while语句的循环体,可能一次也不被执行。

4、如果循环条件表达式的值__,表示条件为真;如果表达式的值为___,表示条件为假。

5、当循环体包含一条以上的语句时,必须用__括起来,组成复合语句。

2、若某do-while的循环体由3条语句组成,这3条语句不必用大括号“{}”括起来。

4、do-while语句的循环体,可能一次也不被执行。

3、for(表达式1;表达式2;表达式3)中的3个表达式都可以省略,但用于分割3个表达式的两个分号“;”不能省略。

6.4 循环嵌套随堂测验

4、双重循环的执行过程是外层循环的循环体执行一次,内层循环执行一遍。

6.5 辅助控制语句随堂测验

6.6 循环结构实例随堂测验

8、关于双重循环的执行过程,以下说法正确的是__。

77、循环条件表达式不仅限于关系表达式和逻辑表达式,可以是任意类型的表达式。

78、while语句的循环体,可能一次也不被执行。

79、若某do-while的循环体由3条语句组成,这3条语句不必用大括号“{}”括起来。

81、do-while语句的循环体,可能一次也不被执行。

82、for(表达式1;表达式2;表达式3)中的3个表达式都可以省略,但用于分割3个表达式的两个分号“;”不能省略。

84、双重循环的执行过程是外层循环的循环体执行一次,内层循环执行一遍。

87、case与冒号之间可以是逻辑表达式,进行选择

88、switch语句的分支有可能一个都不执行

89、如果循环条件表达式的值__,表示条件为真;如果表达式的值为___,表示条件为假。

90、当循环体包含一条以上的语句时,必须用__括起来,组成复合语句。

102、在逻辑运算符!,&&,||中,优先级最高的是 。

103、在下列运算符+,+=,++中,优先级最低的是 。

第7讲 同类型数据的处理——数组(一)

7.2 一维数组的定义和引用随堂测验

4、4、完善以下程序,填写括号内容: 已有一个已排好序的整型数组,今输入一个整数,要求按原来排序的规律将它插入数组中。例如:原来数组的元素依次为4、6、8、41、56、77、102。若将42插入数组中,则插入后数组元素依次为4、6、8、41、42、56、77、89、102。 #include <stdio.h> int main() { int a[8]={

5、5、一般地,一维数组各元素分配在连续地内存单元之中。

7.3 一维数组的应用随堂测验

7.4 二维数组定义和引用随堂测验

5、5、c语言中,一维数组某一个数组元素等价于一个同数据类型的变量。

7.5 二维数组的应用随堂测验

4、4、c语言中,当二维数组越界时,会有错误提示。

5、5、c语言中,二维数组某一个数组元素等价于一个同数据类型的变量。

7.6 数组下标越界访问问题随堂测验

5、5、c语言中,二维数组下标越界时,会有错误提示。

第8讲 同类型数据的处理——数组(二)

7.7 字符数组定义及输入输出随堂测验

3、字符数组中的数据存储时必须以'\0'结尾。

7.8 字符串处理函数随堂测验

2、对字符串进行输入输出操作时,只能对字符串整体进行输入输出。

3、如果在程序中调用了strcpy函数,则需要预处理命令 。

7.9 字符数组应用举例随堂测验

1.下列有关变量的命名正确的是(a )

2.在js代码中,‘123’+ 4 的运行结果是 ( b)

4.下列有关相等运算符的描述正确的是( b)

A: ‘==’在比较过程中,不但会比较两边的值,还会比较两边的数据类型 
 

6.下列有关数据类型转换后的表达式成立的是(C)

8.下列有关break关键字的描述不正确的是(c )

A: break关键字可以用于switch-case结构当中,跳出当前结构 
B: break关键字可以用于循环当中,跳出当前循环 
C: break关键字和continue的用法是一样的,因此可以通用 
D: break后面的代码不会再执行 

10.以下代码输出的结果是( a)

12.以下代码输出的结果是(b )

1.有关数组的描述正确的有(a,b,c )

A: js中的数组可以存储任意的数据类型 
B: js中的数组长度是动态可变的 
C: unshift()可以用来删除数组的最后一项 
 

2.以下有关函数的描述正确的有(

A: 函数可以用来封装某些重复的代码,解决代码冗余 
B: 函数包含三要素,函数功能(函数名),参数和返回值 
C: 函数的形参,就相当于是函数内部的变量,只能在函数内部使用 
D: js中的函数,形参和实参的个数可以不一样 

3.以下关于return关键字的用法,说法正确的有(a,b )

A: return是js中的关键字,不能用来定义变量 
B: return关键字用于函数当中,用于返回函数当中的数据 
C: return用于函数当中,当执行了return之后,后面的代码不再执行 
 

1.求1到100(含)之间所有数的和及平均值

4.定义一个函数输入某年某月某日,判断这一天是这一年的第几天?

5.写一个函数传过来一个日期对象,返回yyyy-MM-dd HH:mm:ss形式的字符串

6.封装一个函数随机生成16进制的颜色

cookie的内容主要包括:名字、值、过期时间、路径和域。路径与域一起构成cookie的作用范围.
若不设置时间,关闭浏览器窗口,cookie就会消失。这种生命期为浏览器会话期的cookie被称为会话cookie。
1、cookie数据存放在客户的浏览器上,session数据放在服务器上
2、cookie在浏览器关闭窗口后失效消失,session则是在你设置的有效时间内一直有效
3、cookie保存在浏览器上,保密性差,重要信息不推荐使用,session保存于服务器,用到时获取且可以通过url编码,比cookie安全
4、session中保存的是对象,cookie中保存的是字符串
6.Cookie支持跨域名访问,而Session则不会支持跨域名访问。Session仅在他所在的域名内有效。Cookie与Session的搭配运用在实践项目中会完成很多意想不到的效果。

共同点:都是保存在浏览器端、且同源的

1、cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递,而sessionStorage和localStorage不会自动把数据发送给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下
2、存储大小限制也不同,cookie数据不能超过4K,同时因为每次http请求都会携带cookie、所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大
3、数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭之前有效;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie:只在设置的cookie过期时间之前有效,即使窗口关闭或浏览器关闭
4、作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localstorage在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的
5、web Storage支持事件通知机制,可以将数据更新的通知发送给监听者
v-model指令在vue内的作用是数据双向绑定;
通过绑定数据,提取绑定数据显示: 
 

一般情况下变量在创建的作用域内取值,若是寻找不到,就会向上级作用域访问(就是内部子级函数项父级获取变量),这个过程形成的链条就叫作用域链.

构造函数与其他函数没有太大区别,主要是功能性,是为了提高函数内相同代码的复用,将其提取成一个构造函数,可以通过(new 构造函数名称)调用. 基本语法: function 构造函数名称() { this.属性 = 值 this.方法 = function(){

书写规范:首字母大写,不需要return,使用new调用构造函数,使用this为新对象添加属性方法.

6.JS有哪些内置对象

简单讲就是子级函数内的变量被父级函数以外的函数引用,就会形成闭包.就是一个函数内的函数局部变量被该函数之外其他函数调用
闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。
闭包的作用,就是保存自己私有的变量,通过提供的接口(方法)给外部使用,但外部不能直接访问该变量。 

答: Javascript 是面向对象的,每个实例对象都有一个__proto_属性,该属性指向它原型对象,这个实例对象的构造函数有一个原型属性 prototype,与实例的__proto__属性 指向同一个对象。当一个对象在查找一个属性的时,自身没有就会根据__proto__ 向它的原型进行查找,如果都没有,则向它的原型的原型继续查找,直到查到Object.prototype._proto_为 null,这样也就形成了原型链。

HTTP状态码的英文为HTTP Status Code。状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

答: 1xx:指示信息--表示请求已接收,继续处理。 2xx:成功--表示请求已被成功接收、理解、接受。 3xx:重定向--要完成请求必须进行更进一步的操作。 4xx:客户端错误--请求有语法错误或请求无法实现。 5xx:服务器端错误--服务器未能实现合法的请求。

常见状态代码、状态描述的说明如下。

 200 OK:客户端请求成功。
 400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
 403 Forbidden:服务器收到请求,但是拒绝提供服务。
 404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
 

10.在浏览器输入url后发生了什么

1.浏览器的地址栏输入URL并按下回车。 2.浏览器查找当前URL是否存在缓存,并比较缓存是否过期。 3.DNS解析URL对应的IP。 4.根据IP建立TCP连接(三次握手)。 5.HTTP发起请求。 6.服务器处理请求,浏览器接收HTTP响应。 7.渲染页面,构建DOM树。 8.关闭TCP连接(四次挥手)。

我要回帖

更多关于 下面程序运行后输出的结果是 的文章

 

随机推荐