在三大框架盛行的时代, 基本上会个 Vue 就能在小公司浑水摸鱼。但是当想突破的时候就会意识到基础的重要性。
JavaScript 中有很多重要特性及概念。比如原型,原型链,this,闭包,作用域,隐式转换等等。如果不能熟练掌握,在进阶中级前端开发工程师的道路上必定是困难重重。
用一个小时把这些题做完。检测一下你的基础掌握程度。正题
1.
if(false){
var a = 1;
let b = 2;
}
console.log(a);
console.log(b);
2.
var a = 1;
if(true){
console.log(a);
let a = 2;
}
3.
var a = {n: 1}
var b = a
a.x = a = {n: 2}
console.log(a.n, b.n);
console.log(a.x, b.x);
4.
console.log©;
var c;
function c(a) {
console.log(a);
var a = 3;
function a(){
}
}
c(2);
5.
var c = 1
function c© {
console.log©;
var c = 3;
}
console.log©;
c(2);
6.
var name = ‘erdong’;
(function () {
if (typeof name === ‘undefined’) {
var name = ‘chen’
console.log(name)
} else {
console.log(name)
}
})();
7.
var a = 10;
function test() {
a = 100;
console.log(a);
console.log(this.a);
var a;
console.log(a);
}
test();
8.
if (!(a in window)) {
var a = 1;
}
console.log(a)
9.
var a = 1
function c(a, b) {
console.log(a)
a = 2
console.log(a)
}
c()
10
var val=1;
var obj={
val:2,
del:function(){
console.log(this);
this.val*=2
console.log(val)
}
}
obj.del();
11
var name = “erdong”
var object = {
name: “chen”,
getNameFunc: function () {
return function () {
return this.name;
}
}
}
console.log(object.getNameFunc()());
12
var name = “erdong”
var object = {
name: “chen”,
getNameFunc: function () {
var that = this;
return function () {
return that.name;
}
}
}
console.log(object.getNameFunc()());
13
(function() {
var a = b = 3;
})();
console.log(typeof a === ‘undefined’);
console.log(typeof b === ‘undefined’);
14
var a = 6;
setTimeout(function () {
a = 666;
}, 0)
console.log(a);
15
function fn1() {
var a = 2
function fn2 () {
a++
console.log(a)
}
return fn2
}
var f = fn1()
f()
f()
16
var a = (function(foo){
return typeof foo.bar;
})({foo:{bar:1}});
console.log(a);
17
function f(){
return f;
}
console.log(new f() instanceof f);
18
function A () {
}
A.prototype.n = 1
var b = new A();
A.prototype = {
n: 2,
m: 3
}
var c = new A()
console.log(b.n, b.m);
console.log(c.n, c.m);
19
var F = function(){}
var O = {};
Object.prototype.a = function(){
console.log(‘a’)
}
Function.prototype.b = function(){
console.log(‘b’)
}
var f = new F()