javascript 面試題 基礎篇

來源:互聯網
上載者:User

1、typeof(NaN) 、typeof(Infinity)、typeof(null)、typeof(undefined)
2、NaN == NaN
3、NaN != NaN
4、NaN >= NaN
5、null == undefined
6、null >= undefined
7、null <= undefined
8、parseInt("123abc")
9、"123abc" - 0
10、Infinity > 10
11、Infinity > "abc"
12、Infinity == NaN
13、true == 1
14、new String("abc") == "abc"
15、new String("abc") === "abc"

說出它們的輸出結果

1、
var a = "123abc";
alert(typeof(a++));
alert(a);

2、
var a = "123abc";
a.valueOf = function(){return parseInt(a);}
alert(++a);
alert(a-0);

3、
var a = new Object();
a.toString = function(){return "123abc";}
a.valueOf = function(){return parseInt(a);}
alert(++a);
alert(a-0);

4、
String.prototype.valueOf = function()
{
return parseFloat(this);
}
alert("123abc" > 122);
alert(new String("123abc") > 122);

5、
var s = new String("abc");
alert(typeof(s) == typeof("abc"));
alert(s === "abc");
alert(s.toString() == s);

6、
var a = new Object();
a.toString = function(){return "a"};
var b = new Object();
b.toString = function(){return "b"};
alert(a>b);
a.valueOf = function(){return 1};
b.valueOf = function(){return 0};
alert(a>b);

7、
function step(a)
{
return function(x)
{
       return x + a++;
}
}
var a = step(10);
var b = step(20);
alert(a(10));
alert(b(10));

 

第一題
var i=5;
function fo()
{
var i=4;
var fi=new Function("alert(i);");
fi();
}
fo();

第二題
function f1()
{
i=20;
eval("var i");
}
alert(i);
function f1()
{
i=10;
var i;
}
alert(i);

第三題
function f1()
{
alert("1");
}
function f2()
{
alert("2");
}
var f3=f1.call;
f3.call(f2);

第四題
function fo()
{
var i=0;
return function(n)
{
       return n+i++;
}
}
fo()(15);
alert(fo()(20));

第五題
function f1(n)
{
if(n==0)return;
else return f2(--n);
}
function f2(n)
{
alert(f1.caller);
return f1(n);
}
f1(2);

第六題
alert(typeof Function.prototype);
alert(Object.prototype instanceof Function);
alert(Function.prototype instanceof Function);

原型和對象

第一題
function cls1()
{
this.a=new Array;
}
function cls2()
{
}
cls2.prototype=new cls1;
var x=new cls2;
var y=new cls2;
x.a.push(1,2,3);
alert(y.a);

第二題
function cls1()
{
this.a=1;
}
function cls2()
{
}
var x=new cls2;
cls2.prototype=new cls1;
var y=new cls2;
alert(x.a);
alert(y.a);

第三題
function cls1()
{
this.a=1;
}
function cls2()
{
}
var x=new cls2;
cls2.prototype.a=1;
var y=new cls2;
alert(x.a);
alert(y.a);

第四題
function cls1()
{
this.a=1;
}
function cls2()
{
}
var x=new cls2;
cls2.prototype.a=1;
var y=new cls2;
alert(x.a);
alert(y.a);

第五題
String.prototype.self=function()
{
return this;
}
var s="s";
alert("s".self()=="s")
alert(s.self()==s)
alert("s"==="s")
alert("s".self()=="s".self())
alert(s.self()==s.self())

 

進入名企的javascript面試題
基礎部分
1 以下問題簡短作答
1.1 Jscript的兩種變數範圍有什麼不同?
1.2 列舉Jscript的三種主要資料類型、兩種複合資料型別和兩種特殊資料類型。
1.3 程式中捕獲異常的方法。
2 聲明一個字串數組並初始化,存放用於金額大寫的十個中文字元

3 寫出下列常式啟動並執行結果
3.1 程式運行完畢後,k等於幾?
1
2
3
for (i = 0, j = 0; i &lt; 10, j&lt;6; i++, j++) {
k = i + j;
}

3.2 寫出函數DateDemo的返回結果,系統時間假定為今天

function DateDemo() {
 
var d, s = "今天日期是: ";
 
d = new Date();
 
s += d.getMonth() + "/";
 
s += d.getDate() + "/";
 
s += d.getYear();
 
return(s);
 
}

3.3 寫出程式最後一條語句執行後變數result的值

var epsilon = 0.00000000001; // 一些需要測試的極小數字。
 
function integerCheck(a, b, c)
 
{
 
if ( (a*a) == ((b*b) + (c*c)) )

return true;
 
return false;
 
}
 
function floatCheck(a, b, c)
 
{
 
var delta = ((a*a) - ((b*b) + (c*c)))
 
delta = Math.abs(delta);
 
if (delta &lt; epsilon)
 
return true;
 
return false;
 
}
 
function checkTriplet(a, b, c)
 
{
 
var d = 0;
 
if (b &gt; a)
 
{
 
d = a;
 
a = b;
 
b = d;
 
}
 
if (c &gt; a)
 
{
 
d = a;
 
a = c;
 
c = d;
 
}
 
if (((a % 1) == 0) &amp;&amp; ((b % 1) == 0) &amp;&amp; ((c % 1) == 0))
 
{
 
return integerCheck(a, b, c);
 
}
 
else
 
{
 
return floatCheck(a, b, c);
 
}
 
}
 
// 下面的三個語句賦給範例值,用於測試。

var sideA = 5;
 
var sideB = 5;
 
var sideC = Math.sqrt(50.001);
 
var result = checkTriplet(sideA, sideB, sideC);

4 寫一個函數,返回指定的英文句子中的每個單詞及其字元的起止位置
例:”The rain in Spain falls mainly in the plain.”
應依次返回”The 0-3”, ”rain 4-8” … … ”plain 38-43”
進階部分
5 瀏覽器對 JScript指令碼的解釋順序?
6 判斷下列運算式的真假

“100″ == 100;
false == 0;
“100″ === 100;
false === 0;
7 如何為語句設定預設對象(通常用來縮短特定情形下必須寫的代碼量,使代碼變得更短且更易讀)?在下面的例子中,請注意 Math的重複使用:
1
2
3
x = Math.cos(3 * Math.PI) + Math.sin(Math.LN10)
 
y = Math.tan(14 * Math.E)

8 在對象的屬性的個數未知的情況下,如何對該對象的屬性進行遍曆?
9 書寫一個匹配HTML標記的Regex
10 構造一個自訂對象,實現對一個矩形的對象化,要求:

a) 描述矩形的標識(name)
b) 描述矩形的顏色(color)
c) 描述矩形的寬度(width)
d) 描述矩形的高度(height)
e) 提供擷取矩形面積的方法(getArea())
f) 寫出建構函式的完整代碼
g) 給出調用的執行個體代碼

 

javascript面試題

javascript彈出確認框的函數
.text框輸入完成後,按斷行符號鍵跳到下一個text框
.伺服器端刪除提示的訊息框如何寫

form中的input有哪些類型?各是做什麼處理使用的?  
  text   radio   checkbox   file   button   image   submit   reset   hidden  

  2、table標籤中border,cellpadding     td標籤中colspan,rowspan分別起什麼作用?  
  border邊界  
  cellpadding邊距  
  colspan跨列數  
  rowspan跨行數  

  3、form中的input可以設定readonly和disable,請問這兩項屬性有什麼區別?  
  readonly不可編輯,但可以選擇和複製  
  disable不能編輯複製選擇  

  4、JS中的三種彈出式訊息提醒(警告視窗、確認視窗、資訊輸入視窗)的命令是什嗎?  
  alert  
  confirm  
  prompt

以下哪條語句會產生運行錯誤:()
A.var obj = ();
B.var obj = [];
C.var obj = {};
D.var obj = //;
2、以下哪個單詞不屬於javascript保留字:()
A.with
B.parent
C.class
D.void
3、請選擇結果為真的運算式:()
A.null instanceof Object
B.null === undefined
C.null == undefined
D.NaN == NaN
二、不定項選擇題
4、請選擇對javascript理解有誤的:()
A.JScript是javascript的簡稱
B.javascript是網景公司開發的一種Java指令碼語言,其目的是為了簡化Java的開發難度
C.FireFox和IE存在大量相容性問題的主要原因在於他們對javascript的支援不同上
D.AJAX技術一定要使用javascript技術
5、foo對象有att屬性,那麼擷取att屬性的值,以下哪些做法是可以的:()
A.foo.att
B.foo(“att”)
C.foo[“att”]
D.foo{“att”}
E.foo[“a”+”t”+”t”]
6、在不指定特殊屬性的情況下,哪幾種HTML標籤可以手動輸入文本:()
A.<TEXTAREA></TEXTAREA>
B.<INPUT type=”text”/>
C.<INPUT type=”hidden”/>
D.<DIV></DIV>
7、以下哪些是javascript的全域函數:()
A.escape
B.parseFloat
C.eval
D.setTimeout
E.alert
8、關於IFrame表述正確的有:()
A.通過IFrame,網頁可以嵌入其他網頁內容,並可以動態更改
B.在相同網域名稱下,內嵌的IFrame可以擷取外層網頁的對象
C.在相同網域名稱下,外層網頁指令碼可以擷取IFrame網頁內的對象
D.可以通過指令碼調整IFrame的大小
9、關於表格表述正確的有:()
A.表格中可以包含TBODY元素
B.表格中可以包含CAPTION元素
C.表格中可以包含多個TBODY元素
D.表格中可以包含COLGROUP元素
E.表格中可以包含COL元素
10、關於IE的window對象表述正確的有:()
A.window.opener屬性本身就是指向window對象
B.window.reload()方法可以用來重新整理當前頁面
C.window.location=”a.html”和window.location.href=”a.html”的作用都是把當前頁面替換成a.html頁面
D.定義了全域變數g;可以用window.g的方式來存取該變數
三、問答題:
1、談談javascript數組排序方法sort()的使用,重點介紹sort()參數的使用及其內部機制
2、簡述DIV元素和SPAN元素的區別。
3、結合<span id=”outer”><span id=”inner”>text</span></span>這段結構,談談innerHTML outerHTML innerText之間的區別。
4、說幾條XHTML規範的內容(至少3條)
5、對Web標準化(或網站重構)知道哪些相關的知識,簡述幾條你知道的Web標準?
四、程式題:
1、完成foo()函數的內容,要求能夠彈出對話方塊提示當前選中的是第幾個單選框。
<html>
<body>
<script>
function foo() {
// 在此處添加代碼
return false;
}
</script>
<body>
<form name="form1" >
<input type="radio" name="radioGroup"/>
<input type="radio" name="radioGroup"/>
<input type="radio" name="radioGroup"/>
<input type="radio" name="radioGroup"/>
<input type="radio" name="radioGroup"/>
<input type="radio" name="radioGroup"/>
<input type="submit"/>
</form>
</body>
</html>
2、填充注釋部分的函數體,使得foo()函數調用彈出”成功”的對話方塊。代碼應盡量簡短。
<html>
<body>
<script>
function foo() {
var str = reverse('a,b,c,d,e,f,g');
alert(str);
if (str == 'g,f,e,d,c,b,a') alert('成功');
else alert('失敗');
}
function reverse(str) {
// 在此處加入代碼,完成字串翻轉功能
}

 
<script type="text/javascript">
var x = 1;
var y = 0;
var z = 0;
function add(n){n=n+1;}
y = add(x);
function add(n){n=n+3;}
z = add(x);
s=y+z;
</script>

求:
y的值是?
z 的值是?
s的值是?

我相信,肯定有同學會答錯,當然,不是說他們不會,而是他們可能太大意了!

我們首先看function add,兩個add都沒有傳回值,而我們知道,沒有明確傳回值的,全部返回undefined,所以,y和z都會是undefined,那麼s自然也就不會是一個數字了,沒錯,s應該是NaN。

假如我們將題目改一下呢?如下:
<script type="text/javascript">
var x = 1;
var y = 0;
var z = 0;
function add(n){return n=n+1;}
y = add(x);
function add(n){return n=n+3;}
z = add(x);
s=y+z;
</script>

兩個function add都有傳回值了,那麼,y,z,s會是多少呢?
不錯,y和z都是4,s是8,為什麼y不是2而是4呢?因為在javascript中,直接通過function申明的函數,後面定義的,會影響到之前的引用,如下:

<script type="text/javascript">
function x(){alert(2)};
x();//output 3
function x(){alert(3)};
x();//output 3
</script>

如果是通過var來申明的函數會是什麼情況呢?我們看看:

<script type="text/javascript">
var x = function(){alert(0)};
x();//output 0
var x=function(){alert(1)};
x();//output 1
x();//output 1
</script>

通過var申明的函數,後面定義的並不會影響前面的引用。

如果兩種模式混合,又會是什麼情況呢?

<script type="text/javascript">
function x(){alert(2)};
x();//output 3
var x = function(){alert(0)};
x();//output 0
var x=function(){alert(1)};
x();//output 1
function x(){alert(3)};
x();//output 1
</script>

結果是這樣的,你猜到了嗎?

通過function定義的函數,後面定義的,照舊影響了前面的引用,但是不能改變通過var申明函數後的引用,反而,通過var申明的函數,改變了後來通過function申明函數之後的引用。

所以,如果:
<script type="text/javascript">
var x=function(){alert(1)};
x();
function x(){alert(3)};
x();
</script>
後面的x()出來的也會是1。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.