小编dan*_*doh的帖子

'this'关键字在Nodejs和浏览器中的行为有所不同

我有这段代码:

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 浏览器结果

这怎么可能发生?任何人都能解释一下真正发生的事情吗?

javascript node.js

26
推荐指数
5
解决办法
2303
查看次数

for循环中没有检查条件,但循环仍然终止C++

我在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循环然后停止并在循环后运行代码,虽然没有检查条件,有人可以解释引擎盖下发生了什么吗?

c++ for-loop operator-overloading

0
推荐指数
1
解决办法
67
查看次数

Haskell如何评估这个素数函数?

我发现很难理解Haskell如何评估这个primes函数.是的primes功能得到评估一遍又一遍,或primesprimeFactors功能将指向回到第一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)

haskell lazy-evaluation weak-head-normal-form

-1
推荐指数
1
解决办法
105
查看次数