-
Notifications
You must be signed in to change notification settings - Fork 67
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
一些不错的js题 #23
Comments
方法后面跟模板字符串。。。这是什么写法。。 |
@withzhaoyu 这个叫做"tagged template"。mdn--Template literals (Template strings) |
😝,谢谢。昨天去了解了下,居然还有这样的用法,涨姿势了 |
涨姿势了。 👍 |
const name = "Lydia";
age = 21;
console.log(delete name);
console.log(delete age);
为毛是这个结果? 因为delete。他如果作用于被 我们都知道delete多用于删除某个对象的属性,对GC更友好。来看看delete的一些冷知识点。 |
function* startGame() {
const answer = yield "Do you love JavaScript?";
if (answer !== "Yes") {
return "Oh wow... Guess we're gone here";
}
return "JavaScript loves you back ❤️";
}
var game = startGame();
console.log(/* 1 */); // Do you love JavaScript?
console.log(/* 2 */); // JavaScript loves you back ❤️
其实这个也不是很难,第二个和第四个明显是语法有误,就第一个和第三个到底是哪个? |
var status = "😎"
setTimeout(() => {
const status = "😍"
const data = {
status: "🥑",
getStatus() {
return this.status
}
}
console.log(data.getStatus())
console.log(data.getStatus.call(this))
}, 0)
额,如果这个难倒了,那就需要看看这个万恶的this了。 this的那几钟情况或者直接看这里 |
const value = "constructor";
value[value][value]('console.log("WTF?")')();
这么突然的一眼看上去还挺操蛋,不过聪明的你想来已经把他给分解了。 |
console.log(data.getStatus()) 这个就是当前对象的指向,所以这个应该没有问题。 console.log(data.getStatus.call(this)) 这个结果是猜出来的,不过猜对了。 😢 |
var obj = {}
obj.x = obj = {name: 'xiaohesong'}
console.log(`obj is`, obj, `property x is`, obj.x)
你觉得答案是哪个? 显示答案
答案: c你可能好奇,为什么不是一个循环引用? 因为在 obj.x = obj = {name: 'xiaohesong'} 这段代码中有连续的赋值,导致引用被改变。 下面来详细的说说。 obj.x = {name: 'xiaohesong'} 其实这里的连续赋值和这个情况类似,不过多了个引用的问题。 我们知道LHS查找会确定他的作用域,此时找到的 另外,不得不提一句,js中没有指针,只有对值的引用。 |
function nums(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))
你觉得答案是哪个? 显示答案
答案: B其实这个也不是很难,不过这里想说下,对于一些语句他会自动插入分号。 哪些语句? |
function compareMembers(person1, person2 = person) {
if (person1 !== person2) {
console.log("Not the same!")
} else {
console.log("They are the same!")
}
}
const person = { name: "Lydia" }
compareMembers(perosn)
你觉得答案是哪个? 显示答案
答案: B答案真的是 但是这里要分情况了。如果你在现代的浏览器,那是会报错的,报什么错,那就你自己试试。知道为啥报错吗?查看es6 function params。 还有一种情况,就是不报错,那就是es5的情况,这种情况不好模拟,因为大多数现代浏览器都支持了es6。es5会输出对应的 从回答里可以看出,作者是想表述的是关于引用的问题,但是出的这个题不是很恰当。
var person = { name: "Lydia" };
function compareMembers(person1, person2 = person) {
if (person1 !== person2) {
console.log("Not the same!")
} else {
console.log("They are the same!")
}
}
compareMembers(perosn) 在现代浏览器里是不是一样的效果? |
let config = {
alert: setInterval(() => {
console.log('Alert!');
}, 1000),
};
config = null;
你觉得答案是哪个? 显示答案
答案: c这个在定义对象的时候会解析属性值,如果有引用,直接解析引用,所以 |
输出内容系列
是不是大吃一惊,哈哈。这个细节还真是没有注意到。
The text was updated successfully, but these errors were encountered: