代码改变世界

常见试题

2013-12-17 17:20  臭小子1983  阅读(225)  评论(0编辑  收藏  举报

一、XHTML、CSS

1、怎样触发怪异模式、怪异模式与标准模式的区别?

 

 

 

 

 

二、javascript

字符转换类:

1、alert("1" + 2 + "3" + 4)结果是多少?

  答:"1234"  字符串

   alert(4 + 3 + 2 + "1")结果是多少?

  答:"91"

 

作用域

1、下列运算后结果是多少?  答:1  

1 var foo = 1;
2 function bar() {
3     foo = 10;         // 所以,在foo=10的时候,foo是有定义的,属于局部变量,影响不到外层的foo
4     return;
5     function foo() {}    // 虽然遇到return 但foo先定义了变量所以会执行,如果function fooText(){} 这样会输出10
6 }
7 bar();
8 alert(foo);

 

2、下列运算后结果是多少?  答:Function 

1 function bar() {
2     return foo;
3     foo = 10;
4     function foo() {}
5     var foo = 11;
6 }
7 
8 alert(typeof bar());

 

3、下列代码的执行顺序是什么?     答:3,1

 1 var x = 3;
 2 
 3 var foo = {
 4     x: 2,
 5     baz: {
 6         x: 1,
 7         bar: function() {
 8             return this.x;
 9         }
10     }
11 }
12 
13 var go = foo.baz.bar;
14 alert(go());        // 这个时候调用指针this为window,会调用全局变量x,所以等于3
15 alert(foo.baz.bar());   // 会调用baz下的对象属性x=1;

 

4、下列代码弹出什么?  答:4

 1 var x = 4,
 2     obj = {
 3         x: 3,
 4         bar: function() {
 5             var x = 2;
 6             setTimeout(function() {
 7                 var x = 1;
 8                 alert(this.x);      // 这个this指向了window所以等于4
 9             }, 1000);
10         }
11     };
12 
13 obj.bar();    // 因为调用的时候是window调用的

  

5、下面弹出弹出什么? 答:2

1 x = 1;
2 
3 function bar() {
4     this.x = 2;       // 这里的this指向foo
5     return x;
6 }
7 
8 var foo = new bar();
9 alert(foo.x);        // 是构造函数本身

 

6、下面会弹出什么?  答:2

1 function foo(a) {
2     alert(arguments.length);
3 }
4 foo(1, 2, 3);        // arguments取的是实参的个数

 

7、下面代码会弹出什么?  答:undefined

1 var foo = function bar() {}; 
2 
3 alert(typeof bar);    // 这种情况下bar的名字从外部不可见,那是不是这个名字别人就没法知道了呢

 

8、下面代码会弹出什么?  答:2

1 var arr = [];
2 arr[0]  = 'a';
3 arr[1]  = 'b';
4 arr.foo = 'c';    // arr本身就是对象在对象下面添加一个属性不会有问题,
5 alert(arr.length);

 

9、下面代码会弹出什么?  答:2

1 function foo(a) {
2     arguments[0] = 2;  // 会将第一个参数的值覆盖为2
3     alert(a);
4 }
5 foo(1);

 

10、下面代码会弹出什么?   答:undefined 、 local

1 // 反例
2 myname = "global"; // 全局变量
3 function func() {
4     alert(myname); // "undefined"
5     var myname = "local";
6     alert(myname); // "local"
7 }
8 func();

为什么第一个不弹出"global"

此时函数肯定很自然而然地看全局变量myname,但是,实际上并不是这么工作的。

第一个alert会弹 出”undefined”是因为myname被当做了函数的局部变量(尽管是之后声明的),所有的变量声明当被悬置到函数的顶部了。

因此,为了避免这种混乱,最好是预先声明你想使用的全部变量。

myname = "global"; // global variable
function func() {
var myname; // 等同于 -> var myname = undefined;
alert(myname); // "undefined"
myname = "local";
alert(myname); // "local"}
func();

 

但如果函数内不声明局部变量会就弹出"global"

1 myname = "global"; // 全局变量
2 function func() {
3     alert(myname); // "undefined"
4 }
5 func();

 

11、

 1 var a = 10;
 2 
 3 function aa(){
 4      bb();
 5 
 6      alert(a);
 7 
 8      function bb() {
 9           var a = 20;  
10     }  
11 }    
12 
13 aa();    // 10;

 

 

三、HTML5和CSS3