2020.4.19 : 1-35
2020.4.20:36-58
console.log('one');
setTimeout(function(){
console.log('two');
},0);
console.log('three');
console.log('four');
答案:“one” “three” “four” “two”
解析:回调时,被回调的函数会被放在event loop里,等待线程里的任务执行完后才执行event loop里的代码。 因此,上述代码会先把线程里的执行完后,再执行event loop里的setTimeout函数。
for(var i = 0; i < 10; i++) {
setTimeout(function() {
console.log(i);
}, 1000);
}
答案:10个10
解析:同第1题的思路,setTimeout是异步操作,setTimeout的第一个参数(函数)会在所有的线程执行完成后再执行,for最后一次循环,在程序体里面 i = 9 , i < 10 ; i++(10) ,在循环结束之后,i = 10,这时候开始执行event loop。
答案:
解析:
A. x === y
B. x == y
C. z === n
D. z == n
答案: D
解析:
A. oStringObject instanceof String
B. typeof oStringObject == ‘string’
C. oStringObject is String
D. 以上答案都不正确
答案: A
解析:
typeof 'hello'; // 'string'
typeof new String('hello'); // 'object'
A. ng-service
B. ng-server
C. ng-command
D. ng-class
答案: A
解析:字面意思,service是服务的意思。
A. ExtensionContex
B. ExternalInterface
C. IInterpolator
D. FlexContentHolder
答案: B
解析:
Flash提供了ExternalInterface接口与JavaScript通信,ExternalInterface有两个方法,call和addCallback:
ExternalInterface.addCallback(“在js里可调用的flash方法名”,flash内方法) //在flash中通过这个方法公开 在js中可调用的flash内的方法;
ExternalInterface.call(“js方法”,传给js的参数) //在flash里调用js里的方法
var foo = "10"+3-"1";
console.log(foo);
A. “102”
B. 102
C. 12
D. “12”
答案: B
解析:
<html>
<body>
<div id="ele" class="div">
<span id="s1" class="sp" lang="zh-cn">
</span>
</div>
</body>
<script type="text/javascript">
function exct() {
var oEle = document.getElementById("ele");
var child = oEle.children;
console.log("ele.children的执行结果是:");
for(i = 0; i < child.length; i++){
console.log(child[i].tagName);
}
child = oEle.childNodes;
console.log("ele.childNodes的执行结果是:");
for(i = 0; i < child.length; i++){
console.log(child[i].tagName);
}
}
exct ();
</script>
</html>
A. 其运行结果是:
div1.children的执行结果是:
SPAN
div1.childNodes的执行结果是:
undefined
SPAN
undefined
B. 其运行结果是:
div1.children的执行结果是:
SPAN
div1.childNodes的执行结果是:
SPAN
C. 对于DOM元素,children是指DOM Object类型的子对象,不包括tag之间隐形存在的TextNode,而childNodes包括tag之间隐形存在的TextNode对象
D. 对于DOM元素,childNodes是指DOM Object类型的子对象,不包括tag之间隐形存在的TextNode,而children包括tag之间隐形存在的TextNode对象
答案: AC
解析:
children 属性与 childNodes 属性的差别
A. 使用script标签,将javascript代码写到之间
B. 添加外部javascript文件
C. 使用行内javascript
D. 使用@import引入javascript文件
答案: ABC
解析:
console.log('Value is ' + (val != '0') ? 'define' : 'undefine');
A. Value is define
B. Value is undefine
C. define
D. undefine
E. Value is define 或者 Value is undefine
F. define 或者 undefine
G. 其它选项都有可能
答案: C
解析:本题考查三目运算符的应用,运算符优先级: “括号” > +" > “?” > “:”
for(var i = 0; i < 5; i++){
requestAnimationFrame(() => console.log(i));
}
A. 1 2 3 4 5
B. 0 1 2 3 4
C. 4 4 4 4 4
D. 5 5 5 5 5
答案: D
解析:requestAnimationFrame并非同步执行的,类似于setTimeout,所以for循环中的requestAnimationFrame会在循环退出的时候才执行其中的回调,注意循环退出的时候 i 的值为 5.
function Foo(){
var i=0;
return function(){
document.write(i++);
}
}
var f1=Foo(),f2=Foo();
f1();
f1();
f2();
A. 010
B. 012
C. 000
D. 011
答案: A
解析:
A. History 对象包含用户(在浏览器窗口中)访问过的 URL
B. Location 对象包含有关当前 URL 的信息
C. Window 对象表示浏览器中打开的窗口
D. Navigator 对象包含有关浏览器的信息
答案: A B C D
解析:
A. module
B. context
C. require
D. exports
答案: A C D
解析:
浏览器不兼容CommonJS的根本原因,在于缺少四个Node.js环境的变量。 module exports require global
A. 每个JS对象一定对应一个原型对象,并从原型对象继承属性和方法
B. 对象的__proto__指向自己构造函数的prototype
C. Object.prototype. proto=== null,说明原型链到Object.prototype终止
D. 表达式 Function.prototype.proto.proto === null 的运行结果为true
答案: A B C D
解析:JS原型链通用规则:
备注:该题可能过时,请按照之前的知识选择。
A. async
B. defer
C. 动态创建DOM方式
D. 按需异步载入
答案:B
解析:
A. 有5种primitive type,分别是Undefined、Null、Boolean、Number 和 String。
B. var sTemp = “test string”;alert (typeof sTemp);结果为string
C. var oTemp;alert(oTemp == undefined)为true
D. alert(null == undefined);结果为false
答案: D
解析:
A. AMD推崇依赖前置,CMD推崇依赖就近
B. Sea.js遵循AMD规范,RequireJS遵循CMD规范
C. 主流的模块化包括CommonJS,AMD,CMD等
D. 模块化有利于管理模块间的依赖,更依赖模块的维护
答案:B
解析:
A. removeClass()
B. deleteClass()
C. toggleClass(class)
D. addClass()
答案:C
解析:
var a = [1,4,5,2,9];
A. Math.max(a)
B. Array.max(a)
C. Math.max.call(null,a)
D. Math.max.apply(null,a)
答案: D
解析:
A. 绑定DOM
B. 数据绑定
C. 定义模版
D. 以上都不是
答案: A
解析:angular编译阶段分为两步 :
var b = 3;
(function(){
b = 5;
var b = 2;
})();
console.log(b);
A. 5
B. 3
C. 2
D. 程序报错
答案:B
解析:函数内部的变量都是局部变量,这个局部变量叫什么都无所谓,也不会影响全局变量的值,在函数执行完成之后会立刻销毁。console输出的应该是全局变量b,var b = 3.
A. Ajax的优势在意在于开放性,易用性及易于开发
B. Flash的优势在于多媒体处理,可以更容易的调用浏览器以外的外部资源
C. Ajax最主要的批评就是它可能破坏浏览器的后退功能
D. flash 文件经常会很大,用户第一次使用的时候需要忍耐较长的等待时间
答案:ABCD
解析:
A. 闭包是指有权访问另一个函数作用域中变量的函数;
B. 函数内再嵌套函数;
C. 内部函数可以引用外层的参数和变量
D. 参数和变量不会被垃圾回收机制回收
答案:ABCD
解析:
<form name="formA">
<select name="a" size="1" id=”obj”>
<option value="a">1</option>
<option value="b">2</option>
<option value="c">3</option>
</select>
</form>
A. obj. value
B. obj.options[obj.selectedIndex].value
C. obj.text
D. obj.options[obj.selectedIndex].text
答案: D
解析:
A. arr.splice(i-1,1)
B. arr.slice(0,n).concat(arr.slice(n+1,arr.length));
C. Array.prototype.remove=function(dx) {
if(isNaN(dx)||dx>this.length){return false;}
for(var i=0,n=0;i
解析:splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
arrayObject.splice(index,howmany,item1,…,itemX)
注释:该方法会改变原始数组。
语法:
参数 | 描述 |
---|---|
index | 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。 |
howmany | 必需。要删除的项目数量。如果设置为 0,则不会删除项目。 |
item1, …, itemX | 可选。向数组添加的新项目。 |
A. splice
B. concat
C. sort
D. pop
答案: B
解析:
var a = 4399 < 0 || typeof(4399 + '');
console.log(a);
A. true
B. string
C. undefined
D. false
E. number
答案: B
解析:此处的 “||” 是短路或,即 若“||” 之前的值为true则a直接等于前面的值。但此处“4399 < 0”是false,所以需要看 “||” 后面的表达式,4399 + ""是String类型,所以typeof返回String, a = String
A. Array
B. Map
C. String
D. Object
答案:ABC
解析:
ES6 规定,默认的 Iterator 接口部署在数据结构的Symbol.iterator属性,或者说,一个数据结构只要具有Symbol.iterator属性,就可以认为是“可迭代的”(iterable)。
原生具备 Iterator 接口的数据结构如下:
A. parseFloat(0.2 + 0.4)
B. parseFloat((0.2 + 0.4).toFixed(1))
C. Math.round(0.2 + 0.4)
D. parseFloat((0.2 + 0.6).toPrecision(1))
答案:B
解析:
选项 | 结果 |
---|---|
A | 0.6000000000000001 |
B | 0.6 |
C | 1 |
D | 0.8 |
var msg='hello';
for (var i=0; i<10; i++)
{
var msg='hello'+i*2+i;
}
alert(msg);
A. hello
B. hello189
C. hello30
D. hello27
答案: B
解析:同
A. typeof(arr)
B. arr instanceof Array
C. arr.toString===’[object Array]’;
D. Object.prototype.toString.call(arr) === ‘[object Array]’;
答案: D
解析:
<html>
<body>
<script type="text/javascript">
var test=new Boolean();
document.write(test);
document.write("
");
var test=new Boolean(0);
document.write(test);
document.write("
");
var test=new Boolean(null);
document.write(test);
document.write("
");
var test=new Boolean("");
document.write(test);
document.write("
");
var test=new Boolean(NaN);
document.write(test);
document.write("
");
</script>
</body>
</html>
A. false false false false false
B. false true false false false
C. false false true test Boolean
D. 其他几项都不对
答案: A
解析:
A. if (x) { function foo() {}}
B. if (x) { var foo = function() {}}
C. if (x) { foo = function() {}}
D. ECMAScript明确的规范了块内函数,javascript实现了这个规范
答案: B
解析:块内声明的变量只要没加var 都算作全局变量。
A. 网络服务
B. 单例对象
C. 接口对象
D. 函数调用
答案: B
解析:angularjs的服务是一个单例对象或函数,对外提供特定的功能。
for(let i = i ; i < 12 ; i++ ){
}
console.log(i);
const a = 12;
a = 13;
console.log(a);
const g = {
b : 3};
console.log(g.b);
g.b = 12;
console.log(g.b);
let[head,...tail] = [1 , 2 , 3 , 4];
console.log(tail);
A. 11,13,3,12,[3,4]
B. i not defined ,TypeError,TypeErrpr,4
C. 11,12,3,3,4
D. i not defined,TypeError,3,12,[2,3,4]
答案: D
解析:
第一次输出:局部变量i在for循环之后被销毁,因此输出“i not defined ”
第二次输出:const a 为常量,a不可以再被修改,因此输出“TypeError”
第三次输出:对象g.b的const定义变量不可以被重写,定义 对象 可以修改 属性 ,因此输出修改后的属性值“12”
第四次输出:介绍ES6的数组语法:
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。
以前,为变量赋值,只能直接指定值。
var a = 1; var b = 2; var c = 3;
ES6允许写成下面这样。
var [a, b, c] = [1, 2, 3];
let [foo, [[bar], baz]] = [1, [[2], 3]];
foo // 1 bar // 2 baz // 3
let [x, , y] = [1, 2, 3];
x // 1 y // 3
let [x, y, ...z] = ['a'];
x // "a" y // undefined z // []
let [head, ...tail] = [1, 2, 3, 4];
head // 1 tail // [2, 3, 4]
因此输出 [2,3,4]
2020.4.20更新
A. stopDeafault()
B. stopPropagation()
C. preventPropagation()
D. preventDefaultEven()
E. preventDefault()
答案: E
解析:
下面三个事件都是事件对象的方法:
<ul>
<li>click me</li>
<li>click me</li>
<li>click me</li>
<li>click me</li>
</ul>
var elements=document.getElementsByTagName('li');
var length=elements.length;
for(var i=0;i<length;i++){
elements[i].onclick=function(){
alert(i);
}
}
A. 依次弹出1,2,3,4
B. 依次弹出0,1,2,3
C. 依次弹出3,3,3,3
D. 依次弹出4,4,4,4
答案: D
解析:
A. goto
B. abstract
C. implements
D. super
E. array
答案: E
解析:Array是Js的对象
var i = 0;
while( i < 40 ){
if( i < 30 )
continue;
Document.write(‘########’);
i++;
}
A. 40
B. 30
C. 39
D. 无数行
E. 一行也没有
答案: E
解析:
if(!filt.test(str))
{
alert("手机号输入错误");
}
A. var filt=/^1[0-9]{10}+$/;
B. var filt=^1[0-9]{10};
C. var filt=/1{10}/;
D. var filt=/^1[0-9]/;
答案: A
解析:
A. 事件捕获>事件冒泡
B. 事件捕获->事件处理->事件冒泡
C. 事件冒泡->事件处理
D. 事件冒泡->事件处理->事件捕获
E. 事件处理->事件捕获->事件冒泡
答案: B
解析:事件流包括3个阶段:
(1)事件捕获
(2)处于目标阶段(事件处理 )
(3)事件冒泡阶段
A.
function numberSort(a,b)
{
return a - b;
}
var arr=new Array("23","6","12","35","76");
document.write(arr.push(numberSort));
B.
function numberSort(a,b)
{
return b - a;
}
var arr=new Array("23","6","12","35","76");
document.write(arr.push(numberSort));
C.
function numberSort(a,b)
{
return b-a;
}
var arr=new Array("23","6","12","35","76");
document.write(arr.sort(numberSort));
D.
function numberSort(a,b)
{
return a - b;
}
var arr=new Array("23","6","12","35","76");
document.write(arr.sort(numberSort));
答案: D
解析:
arr.sort([compareFunction])
[3, 2, 1].sort(function (a, b) {
return a - b;
});
A.
class Foo
{
constructor() {
return Object.create(null);}
}
Foo()
B.
var m=1;
export m;
C.
export var firstName=’Michael’;
D.
在A模块中export{
readFile}后,在B模块中import readFile from ‘A’可以获取到readFile
答案: C
解析:B导出时应加括号 export {m}
参考链接
A. 原型链继承
B. 构造函数继承
C. 组合继承
D. 关联继承
答案: D
解析:JavaScript实现继承共6种方式:
原型链继承、借用构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合式继承。
A. 直接调用
B. 作为对象方法调用
C. 作为构造函数调用
D. 通过call和apply方法调用
答案: ABCD
解析:
var str = "Hellllo world";
str = str.replace(/(l)\1/g, '$1');
A. Helo world
B. Hello world
C. Helllo world
D. Hellllo world
答案: B
解析:
(1) 定义
(2)因此
(3)结果
A. Event和callback
B. 多线程操作
C. 多CPU核
D. Deferral和promise
答案: A
解析:
var str1=new RegExp("e");
document.write(str1.exec("hello"));
A. e
B. null
C. 1
D. 其他几项都不对
答案: A
解析:
var arr=[{
a:1},{
}];
arr.forEach(function(item,idx){
item.b=idx;
});
A. [{a:1},{}]
B. [{a:1,b:0},{b:1}]
C. [{a:1,b:1},{b:1}]
D. [{a:!,b:0},{b:0}]
答案: B
解析:首先,forEach 没有返回值
第一次,item 值为 {a:1}
第一次运行后 item 值为 {a:1,b:0}
第二次,item 值为 {}
第二次运行后 item 值为 {b:1}
A. a
B. b
C. ba
D. true
E. false
F. 执行报错
答案: D
解析:参考链接
A. Array.form(A)
B. [].slice.apply(A)
C. […A]
D. [].map.call(A, o => o)
答案: ABCD
解析:
A. window.history.forward(1);
B. window.history.back(1);
C. window.history.go(-1);
D. window.history.forward(-1);
答案: AD
解析:
window.history.go(-1);
(2) 向前移动一个页面, 等同于调用了 forward():
window.history.go(1);
console.log(1+ "2"+"2");
console.log(1+ +"2"+"2");
console.log("A"- "B"+"2");
console.log("A"- "B"+2);
A.
122
122
NaN
NaN
B.
122
32
NaN
NaN2
C.
122
32
NaN2
NaN
D.
122
32
NaN2
NaN2
答案: C
解析:
A. C
B. JavaScript
C. C++
D. CSS
E. Java
F. Objective-C
答案: B
解析:
function a(a)
{
a^=(1<<4)-1;
return a;
}
A. 5
B. 10
C. 15
D. 16
答案: A
解析:
A. var test=1;typeof test==‘number’;
B. var test=1.2;typeof test==‘float’;
C. var test=undefined;typeof test==‘undefined’;
D. var test={};typeof test==‘object’;
E. var test=‘4399’-0;typeof test==‘number’;
F. var test=null;typeof test==‘object’;
答案: B
解析:B选项 type of 1.2 是 number
A. 非独立
B. 效率低
C. 独立
D. 效率高性
答案: AB
解析:
解释性语言的定义:
解释性语言的程序不需要编译,在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就需要逐行翻译一次,效率比较低。
现代解释性语言通常把源程序编译成中间代码,然后用解释器把中间代码一条条翻译成目标机器代码,一条条执行。
编译性语言的定义:
编译性语言写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。
A. resize
B. click
C. blur
D. mouseleave
答案: ACD
解析:
不支持冒泡事件有:
①focus
②blur
③mouseenter
④mouseleave
⑤load
⑥unload
⑦resize
A.
B.
C.
D.
答案:
解析:
A.
B.
C.
D.
答案:
解析:
A.
B.
C.
D.
答案:
解析:
A.
B.
C.
D.
答案:
解析:
A.
B.
C.
D.
答案:
解析:
A.
B.
C.
D.
答案:
解析:
A.
B.
C.
D.
答案:
解析:
如果我的文章能帮你节约20秒,就请你为我的文章点个赞吧!
0-9 ↩︎