国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

20個(gè)必會(huì)的JavaScript面試題(小結(jié))

2024-05-06 15:37:13
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

問(wèn)題1:JavaScript 中 undefined 和 not defined 的區(qū)別

JavaScript 未聲明變量直接使用會(huì)拋出異常:var name is not defined,如果沒(méi)有處理異常,代碼就停止運(yùn)行了。 但是,使用typeof undeclared_variable并不會(huì)產(chǎn)生異常,會(huì)直接返回 undefined。

var x; // 聲明 xconsole.log(x); //output: undefined console.log(typeof y); //output: undefined console.log(z); // 拋出異常: ReferenceError: z is not defined

問(wèn)題2:下面的代碼輸出什么?

var y = 1;if (function f(){}) {  y += typeof f;}console.log(y);

正確的答案應(yīng)該是 1undefined。

JavaScript中if語(yǔ)句求值其實(shí)使用eval函數(shù),eval(function f(){}) 返回 function f(){} 也就是 true。

下面我們可以把代碼改造下,變成其等效代碼。

var k = 1;if (1) {  eval(function foo(){});  k += typeof foo;}console.log(k); 

上面的代碼輸出其實(shí)就是 1undefined。為什么那?我們查看下 eval() 說(shuō)明文檔即可獲得答案

該方法只接受原始字符串作為參數(shù),如果 string 參數(shù)不是原始字符串,那么該方法將不作任何改變地返回。

恰恰 function f(){} 語(yǔ)句的返回值是 undefined,所以一切都說(shuō)通了。

注意上面代碼和以下代碼不同。

var k = 1;if (1) {  function foo(){};  k += typeof foo;}console.log(k); // output 1function

問(wèn)題3:在JavaScript中創(chuàng)建一個(gè)真正的private方法有什么缺點(diǎn)?

每一個(gè)對(duì)象都會(huì)創(chuàng)建一個(gè)private方法的方法,這樣很耗費(fèi)內(nèi)存

觀察下面代碼

var Employee = function (name, company, salary) {  this.name = name || "";      this.company = company || "";   this.salary = salary || 5000;   // Private method  var increaseSalary = function () {    this.salary = this.salary + 1000;  };  // Public method  this.dispalyIncreasedSalary = function() {    increaseSlary();    console.log(this.salary);  };};// Create Employee class objectvar emp1 = new Employee("John","Pluto",3000);// Create Employee class objectvar emp2 = new Employee("Merry","Pluto",2000);// Create Employee class objectvar emp3 = new Employee("Ren","Pluto",2500);

在這里 emp1,emp2,emp3都有一個(gè)increaseSalary私有方法的副本。

所以我們除非必要,非常不推薦使用私有方法。

問(wèn)題4:JavaScript中什么是閉包?寫出一個(gè)例子

老生常談的問(wèn)題了,閉包是在一個(gè)函數(shù)里聲明了另外一個(gè)函數(shù),并且這個(gè)函數(shù)訪問(wèn)了父函數(shù)作用域里的變量。

下面給出一個(gè)閉包例子,它訪問(wèn)了三個(gè)域的變量

    它自己作用域的變量 父函數(shù)作用域的變量 全局作用域的變量
var globalVar = "abc"; // Parent self invoking function (function outerFunction (outerArg) { // begin of scope outerFunction  // Variable declared in outerFunction function scope   var outerFuncVar = 'x';    // Closure self-invoking function   (function innerFunction (innerArg) { // begin of scope innerFunction    // variable declared in innerFunction function scope    var innerFuncVar = "y";     console.log(           "outerArg = " + outerArg + "n" +      "outerFuncVar = " + outerFuncVar + "n" +      "innerArg = " + innerArg + "n" +      "innerFuncVar = " + innerFuncVar + "n" +      "globalVar = " + globalVar);   }// end of scope innerFunction)(5); // Pass 5 as parameter }// end of scope outerFunction )(7); // Pass 7 as parameter innerFunction is closure that is defined inside outerFunc            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 林西县| 庐江县| 磴口县| 德安县| 兴国县| 嵊州市| 曲水县| 富川| 康平县| 三门峡市| 拉孜县| 财经| 张家界市| 沅陵县| 涿鹿县| 江门市| 泰来县| 凯里市| 大庆市| 辽宁省| 铁岭市| 巫溪县| 自贡市| 濮阳县| 东乡县| 永州市| 永福县| 邵东县| 登封市| 上杭县| 高州市| 西乌珠穆沁旗| 莆田市| 正蓝旗| 星子县| 岑溪市| 开江县| 岳阳县| 徐州市| 霸州市| 盐津县|