一道容易錯的題

2021-10-02 07:20:27 字數 906 閱讀 3931

請問下面的**的列印結果是什麼?為什麼? 

var b = 10;

(function b() )()

是10?還是20?其實都不是

我們知道作用域的函式宣告提公升和變數宣告提公升,但是這裡的 function b(){} 是函式表示式,不是函式宣告。

函式表示式與函式宣告不同,它的函式名只在函式內部有效,並且此繫結屬於常量繫結。

在 非匿名 自執行函式中,函式名、函式變數為唯讀狀態,是無法修改的

也即,b = 20 是無效的;那下面列印b的時候,先在函式內部找,沒找到!然後去全域性找,找到了function.

如果這裡的立即執行函式是匿名函式的話,其結果就是 20;如果給b = 20 前加乙個 var,結果也是20;

當本題**在嚴格模式下執行時,會報錯;非嚴格模式下,它預設 b = 20無效

下面將**稍作改動:

var b = 10;

(function ())()

var b = 10;

(function b(b))(b)

var b = 10;

(function b(b))()

var b = 10;

(function b(b))(b)

var b = 10;

(function b(b))(b)

你都做對了嗎?

一道演算法題

兩個燒杯,乙個放糖乙個放鹽,用勺子舀一勺糖到鹽,攪拌均勻,然後舀一勺混合 物會放糖的燒杯,問你兩個燒杯哪個雜質多?一樣多吧 對的 為啥?是不是因為 糖和鹽本來就是均勻的 因為,就算不攪拌均,你放一勺過去,那邊放一勺不含雜質的過來,那麼都是一勺雜之 如果攪拌均勻的話也是一樣 小依 21 45 32 也...

一道演算法題

1.上午主要做了對翻譯任務的劃分,下午把 翻譯完畢。2.明天要講的演算法題 對乙個集合,求出其連續元素組成的子集中,和最大的子集 我對這道題的理解是 1 若集合中最小值大於0,意味著所有的都大於0,則最大的子集和,為所有值加起來 2 若集合中最大值小於0,意味著所有的都小於0,則最大的子集和,為集合...

一道演算法題

include using namespace std const int size 5 int max sub array const int a,int n,int m int max matrix const int a size int row,int col,int subsize int...