tom大叔,5道題目
1.
if (!("a"
inwindow))
a;//
undefined
等價於:
var a;
if(!('a'
inwindow))
a;//
undefined
①所有全域性變數都window的屬性,var a=1;等價於window.a=1;
②檢驗全域性變數是否宣告的方法:」變數名稱」 in window
③所有的變數宣告都在範圍作用域的頂部。
④var a=1;包括了變數宣告和變數賦值。——
var a;//宣告
a=1;//初始化賦值
2.
var a = 1,
b = function
a(x) ;
alert(a);//1
等價於
var a = 1,
b = functin(x);
alert(a);//1
analysis:該題中,變數a宣告並初始化賦值為1,同時有個同名的函式,並將其儲存在變數b中,此時函式a被變數a所覆蓋,因此alert(a)為1。
①變數宣告在進入執行上下文就完成了。(var a)
②函式宣告也是提前的,所有的函式宣告都在執行**之前就已經完成了宣告。
③函式宣告會覆蓋變數宣告,但不會覆蓋變數賦值。
//在同名變數沒有賦值的情況下,同名函式的優先順序大於同名變數,因此覆而蓋之
function value()
varvalue;
typeof(value);//"function"
//變數value賦值了,那就不一樣了
function value()
varvalue=2;
typeof(value);//number
3.
function
a(x)
var a;
alert(a);//函式a
①當變數和函式同名時,在變數沒有賦值的情況下,同名變數被覆蓋掉。
②當變數和函式同名時,如果變數初始化賦值了,那麼同名函式被覆蓋掉。
4.
function
b(x, y, a)
b(1, 2, 3);
①活動物件是進入函式上下文時刻被建立的,它通過函式的arguments屬性初始化。
②arguments屬性的值是arguments物件。
③arguments物件是活動物件的乙個屬性,包括如下屬性:
a)callee—-指向當前函式的引用。
b)length—真正傳遞的引數個數。
c)properties-indexes(字串型別的整數)屬性的值就是函式的引數值(按引數列表從左向右排列),properties-indexes內部元素的個數等於arguments.length。properties-indexes的值和實際傳遞進來的引數之間是」共享」的。
④這個」共享」其實並不是真正意義上的共享同乙個記憶體位址,而是兩個不同的記憶體位址,使用js引擎來保證這兩個值是時刻保持一樣的,這需要乙個前提—-該索引值要小於你傳入引數的個數。
function
b(x,y,a)
b(1,2);
5.
function
a()
a.call(null);
等價於
//null/undefined 作為第乙個引數均轉化為全域性物件(window)
functiona()
a.call(window);
functiona()
a.call(window);
①this值是如何定義的:當乙個方法在物件上呼叫的時候,this就指向了該物件。object.method();
var
object=
}object.method();
②如果乙個函式的定義不是屬於乙個物件屬性的時候(也就是單獨定義的函式),該函式內部的this等價於window的。
function
method2
()method2();
6.this
①this是乙個與執行上下文相關的特殊物件。因此,可以稱作上下文物件(用來指明執行上下文是哪個上下文中所觸發的物件)。
②this是執行上下文的乙個屬性,而不是變數物件的乙個屬性。
zeromike的深入分析:
8.[[scope]]是在函式建立的時候被儲存起來的—靜態的(不變的),直至該函式被銷毀。
9.函式其實就是乙個物件,在這個物件裡儲存了如下的值:函式形參的名字,當前執行環境,函式體的**。
①形參的名字就是乙個字串陣列。
②函式體**也就是個字串。
10.函式定義就是一段**,執行到這段**之前,這個函式是」抽象」的存在。
11.實際的執行環境實在函式呼叫的時候建立的。
五道邏輯思維題
從1到100排列成一排,總共100個數,每一輪抽走奇數字置的數,問最後剩下哪個數?先思考小規模的問題,例如從1到10,模擬整個抽取過程如下。第1輪抽取完剩下所有偶數,如果都除以2,就變成了1到5的小問題 第2輪抽取後,還是剩下偶數,再除以2,變成1到2。所以最後剩下的數如果因式分解,就是包含因數2最...
讓我心碎的五道題
1.if a in window alert a 答案是undefined。首先js會把全部全域性的變數提前。所以此題能夠改動為 var a if a in window alert a 答案是1 首先要知道變數的宣告和函式的宣告都會提前,第二 函式的宣告會覆蓋變數的宣告。樣例 function v...
位元組跳動8 12機試五道程式設計題 Nelson
在 m,n 的矩陣中,只有1,0元素。定義相鄰包括 上,下,左,右,左上,左下,右上,右下八個點,求連通區域的數量,以及最大連通區域中元素1的個數。import sys a sys.stdin.readline strip split m int a 0 n int a 1 d num pp for...