A. {name:"xiaoming",age,"student"} B. {"name":"xiaoming","age":"student"} C. {"xiaoming","student"} D.["xiaoming","student"]
注:B
下面分别使用 JSON.stringify 方法,返回值 res 分别是
1 2 3 4 5 6 7 8 9 10 11 12
const fn = function(){} const res = JSON.stringify(fn) const num = 123 const res = JSON.stringify(num) const res = JSON.stringify(NaN) const b = true const res = JSON.stringify(b)
A. 'function'、'123'、'NaN'、'true' B. undefined、'123'、undefined、'true' C. undefined、'123'、'null'、'true' D. undefined、'123'、'null'、undefined
A. parseFloat方法:该方法将一个字符串转换成对应的小数 B. isNaN方法:该方法用于检测参数是否为数值型,如果是,返回true,否则,返回false。 C. escape方法: 该方法返回对一个字符串编码后的结果字符串 D. eval方法:该方法将某个参数字符串作为一个JavaScript执行题
// A var formatDate=getDate() // B var formatDate = newDate() // C var formatDate = function (date) { var y = date.getFullYear(); var m = date.getMonth() + 1; var d = date.getDate(); return y + '-' + m + '-' + d; }; // D var formatDate = function (date) { var y = date.getFullYear(); var m = date.getMonth() + 1; m = m < 10 ? '0' + m : m; var d = date.getDate(); d = d < 10 ? ('0' + d) : d; return y + '-' + m + '-' + d; };
注:D
下面哪一项不能最小化重绘(repaint)和回流(reflow)
1 2 3 4
A. 需要对元素进行复杂的操作时,可以先隐藏(display:"none"),操作完成后再显示 B. 需要创建多个DOM节点时,使用DocumentFragment创建完后一次性的加入document C. 尽量避免用table布局(table元素一旦触发回流就会导致table里所有的其它元素回流) D. 尽量不要使用 css 属性简写,如:用border-width, border-style, border-color代替border
A. call与apply都属于Function.prototype的一个方法,所以每个function实例都有call、apply属性 B. 两者传递的参数不同,call函数第一个参数都是要传入给当前对象的对象,apply不是 C. apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入 D. call传入的则是直接的参数列表。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
A. e = "hello"; B. 其它都为undefined C. 当中 a = "h", b = "e"; D. 语法报错
注:C
多选题
JS基础
下面哪些数组方法会改变原数组
1 2 3 4
A. push B. concat C. splice D. map
注:A C
下面可以声明数字的js代码是
1 2 3 4
A. const a = 0xa1 B. const a = 076 C. const a = 0b21 D. const a = 7e2
注:A B D
以下属于操作符 typeof 的返回值的是:
1 2 3 4 5 6 7 8 9 10 11 12 13
(1) function (2) object (3) null (4) array (5) NaN (6) bigint (7) regexp (8) undefined
A. (1)、(2)、(3)、(4)、(5)、(6)、(7)、(8) B. (1)、(2)、(3)、(8) C. (1)、(2)、(8) D. (1)、(2)、(6)、(8)
注:D
以下()结果等于字符串string
1 2 3 4 5
A. typeof'string' B. String('string').toString() C. 'string'.split('').sort().join('') D. (function(string){return string})('string') E. JSON.parse('{"string":"string"}').string
注:A B D E
下面的等式成立的是?
1 2 3 4
A. parseInt(46.8) `==`parseFloat(46.8) B. NaN`!==`NaN C. isNaN('abc') `==`NaN D. typeofNaN`===`'number'
注:B D
以下哪些选项可以将集合A转化为数组?
1 2 3 4
A. Array.from(A) B. [].slice.apply(A) C. [...A] D. [].map.call(A, o => o)
注:A C
下列结果返回 true 的是
1 2 3 4 5 6
A. null == undefined B. null === undefined C. null === null D. NaN == null E. NaN === NaN F. Infinity + 1 !== Infinity
注:A C 值 null 特指对象的值未设置。它是 JavaScript 基本类型 之一,在布尔运算中被认为是false。
JS深入
关于以下代码,说法正确的有哪些?
function Person() { } var person = new Person();
1 2 3 4
A. 每一个原型都有一个constructor属性指向关联的构造函数。 B. 每一个对象都有一个prototype属性。 C. Object.getPrototypeOf(person) === Person.prototype D. person.constructor === Person
注:A C D
下列在 JS 时间循环机制中属于微任务(microTask)的是?
1 2 3 4
A. process.nextTick B. promise C. setTimeout D. setInterval
注:A B
ES6
以下关于let和const的说法中正确的是:
1 2 3 4
A. let声明的变量值和类型都可以改变 B. const声明的常量不可以改变 C. 两者都不存在变量提升,同时存在暂时性死区,只能在声明的位置后面使用 D. const可以先声明再初始化,可以后赋值
注:A B C
下面关于Promise说法正确的是(注意“返回结果”的意思包含成功或者失败)
1 2 3 4
A. Promise.all在所有给定的promise都fulfilled后才返回结果 B. Promise.race在给定的promise中,某个fulfilled后才返回结果 C. promise.then的回调函数中,可以返回一个新的promise D. 对于一个向后台获取数据已经产生结果的promise:p1,再次调用p1.then,不会去重新发起请求获取数据
注:C D
DOM
下列关于使用 JS 修改元素样式的代码,正确的有哪些?
1 2 3 4
A. document.body.style.['background-color'] = '#fff' B. document.body.style.setProperty('background-color', '#fff') C. document.body.style = 'background-color: #fff' D. document.body.style.fontSize = '14px'
注:B C D
下列方法可用于阻止事件冒泡的有
1 2 3 4
A. event.cancelBubble = true; B. event.stopPropagation(); C. event.preventDefault(); D. returnfalse;
<html> <body> <pid="demo"></p> <scripttype="text/javascript"> var x = 10; var y = "10"; document.getElementById("demo").innerHTML = Boolean(x == y); </script> </body> </html>
注:true
document.write的结果会是什么?
1 2 3 4 5 6 7 8 9 10 11
functionfuncA(x){ var temp = 4;
functionfuncB(y){ document.write( ++x + y + (temp--)); }
funcB(5); }
funcA(6)
注:16
alert的结果会是多少
1 2 3 4 5 6
var varArr = function(i,j,str) { return j == 0 ? str : varArr(i,--j,(str+= " " + i[j])); } var arr = newArray('apple','orange','peach','lime'); var str = varArr(arr,arr.length,""); alert(str);
var str = "a1b2c3"; str = str.GetNum(); alert(str);
注:123
下面程序的输出结果是多少?
1 2 3 4
functionsum(a, b) { return a + b; } sum(1, "2");
注:12
下面程序的输出结果是多少?
1 2 3
var str = "我非常喜欢编程"; str.length = 3; console.log(str);
注:我非常喜欢编程 string的length无法修改
下面程序的输出结果是多少?
1 2 3 4
let number = 0; console.log(number++); console.log(++number); console.log(number);
注:0 2 2
下面程序的输出结果是多少?
1 2 3 4 5 6 7 8 9
functionnums(a, b) { if (a > b) console.log('a is bigger') else console.log('b is bigger') return a + b } console.log(nums(4, 2)) console.log(nums(1, 2))
注:简单比大小
下面程序输出结果是多少?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
functionside(arr) { arr[0] = arr[2]; } functionfunc1(a, b, c = 3) { c = 10; side(arguments); console.log(a + b + c); } functionfunc2(a, b, c) { c = 10; side(arguments); console.log(a + b + c); } func1(1, 1, 1); func2(1, 1, 1);
var a = {}, b = '123', c = 123; a[b] = 'b'; a[c] = 'c'; console.log(a[b]); // example 2 var a = {}, b = Symbol('123'), c = Symbol('123'); a[b] = 'b'; a[c] = 'c'; console.log(a[b]); // example 3 var a = {}, b = {key:'123'}, c = {key:'456'}; a[b] = 'b'; a[c] = 'c'; console.log(a[b]);
constPerson = (name="wang",age=10) => { this.name = name; this.age = age; returnthis.name +' is '+ this.age + 'years old' } let result = newPerson('zhang',11) console.log(result)
注:语法错误,Person是箭头函数,没有constructor 无法通过new创建构造函数
请表述以下代码的执行结果和原因
1 2 3 4 5 6 7 8
var person = { age: 18, getAge: function() { returnthis.age; } }; var getAge = person.getAge getAge()
注:undefind
请按顺序写出打印结果,并说明原因。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
var name = 'global'; var obj = { name: 'local', foo: function(){ this.name = 'foo'; }.bind(window) }; var bar = new obj.foo(); setTimeout(function() { console.log(window.name); }, 0); console.log(bar.name);
var bar3 = bar2 = bar; bar2.name = 'foo2'; console.log(bar3.name);
注:foo foo2 local
下面程序的执行结果是:
1 2 3 4 5 6 7 8 9 10 11 12 13
var obj = { name:"zhangsan", sayName:function(){ console.info(this.name); } }
var wfunc = obj.sayName; obj.sayName(); wfunc(); var name = "lisi"; obj.sayName(); wfunc();
注:zhangsan undefind zhangsan lisi
下面程序的输出结果是:
1 2 3 4 5 6 7 8 9
var name='test' var a = { name: 'ass', getName: function() { returnthis.name; } } var b = a.getName; b();
functionFn1(name) { if(name){ this.name = name; } } Fn1.prototype.name="jack" let a = newFn1(); console.log('a:', a.name);
functionFn2(name) { this.name = name; } Fn2.prototype.name="jack" let b = newFn2(); console.log('b:', b.name);
注:jack undefind 原型查询规则,现在自身属性找,如果没有找到再往上一级找
下面程序的输出结果是?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
varFoo = (function() { var x = 0; functionFoo() {} Foo.prototype.increment = function() { ++x; console.log(x); }; returnFoo; })();
var a = newFoo(); a.increment(); a.increment(); var b = newFoo(); a.increment();
下面程序的输出结果是?
1 2 3 4 5 6 7 8 9 10
var name = 'Jay' functionPerson(name){ this.name = name; console.log(this.name) } var a = Person('Tom') console.log(name) console.log(a) var b = newPerson('Michael') console.log(b)
注:Tom Tom Michael
请表述以下代码的执行结果和原因
1 2 3 4 5 6 7 8 9
classA{} classBextendsA{} const a = newA() const b = newB() a.__proto__ b.__proto__ B. __proto__ B. prototype.__proto__ b.__proto__.__proto__
functionsayHello() { console.log(name); console.log(age); var name = "Tom"; let age = 18; } sayHello();
注:报错 let,const没有声明提升,会暂存死区
下面的程序i的打印结果分别是多少?
1 2 3 4 5 6 7 8 9 10 11
for (var i = 0; i < 3; i++) { setTimeout(_ => { console.log(i) }) }
for (let i = 0; i < 3; i++) { setTimeout(_ => { console.log(i) }) }
注:3 3 3, 1 2 3 var存在变量提示生成了全局变量i
下面程序的输出结果是:
1 2 3 4
console.log(a); var a = 'a'; console.log(b); let b = 'b';
注:undefind 报错
下面程序的输出结果是:
1 2 3 4 5 6
var foo = "Hello"; (function(){ var bar = " World"; alert(foo + bar); })(); alert(foo + bar);
注:Hellow World 第二次alert报错
下面程序的输出结果是:
1 2 3 4 5 6 7 8
var a = 10; (function () { console.log(a) a = 5 console.log(window.a) var a = 20; console.log(a) })()
注:undefind 10 20
下面代码的输出结果是:
1 2 3 4 5 6 7
const a = 10 functionrunFunction() { const a = 20 console.log('inside', a) } runFunction() console.log('outside', a)
注:20 10
请描述打印结果并说明原因
1 2 3 4 5 6 7 8 9 10 11 12 13
var name = 'Jay' var person = { name: 'Wang', pro: { name: 'Michael', getName: function () { returnthis.name } } } console.log(person.pro.getName) var people = person.pro.getName console.log(people())
注:Michael Jay
下面程序的结果是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
<ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> <script> var elements = document.getElementsByTagName("li"); for (var i=0;i<elements.length;i++){ elements[i].onclick =function(){ alert(i); }; } </script>