我有这段代码:
var obj1;
var obj2;
function x() {
obj1 = this;
}
function y() {
obj2 = this;
}
x();
y();
console.log(obj1 === obj2);
console.log(obj1 === this);
Run Code Online (Sandbox Code Playgroud)
我使用命令行:node app.js在NodeJS中运行此代码,并在Chrome浏览器中作为脚本运行
结果:在NodeJS中,结果是:true false NodeJS结果
在Chrome浏览器中,结果为:true true 浏览器结果
这怎么可能发生?任何人都能解释一下真正发生的事情吗?
我在C++中有这个程序有一个简单的for循环,for循环没有检查条件:
for (std::string a_word; std::cin >> a_word;) {
// code goes here
}
// Code after the loop
Run Code Online (Sandbox Code Playgroud)
我编译它们并在终端上运行,当我按下Ctrl + D(EOF)时,for循环然后停止并在循环后运行代码,虽然没有检查条件,有人可以解释引擎盖下发生了什么吗?
我发现很难理解Haskell如何评估这个primes函数.是的primes功能得到评估一遍又一遍,或primes在primeFactors功能将指向回到第一primes?
primes = 2 : filter ((==1) . length . primeFactors) [3,5..]
primeFactors n = factor n primes
where
factor n (p:ps)
| p * p > n = [n]
| n `mod` p == 0 = p : factor (n `div` p) (p:ps)
| otherwise = factor n ps
main :: IO ()
main = print $ length . take 100000 $ primes
Run Code Online (Sandbox Code Playgroud)