javascript 面试题

转:http://www.csser.com/board/50359afb73df724356000537#/post/50359e4e73df7243560005b0

1:javascript有几种数据类型

在Javascript中只有五种简单类型,分别为null,undefined,boolean,String和Number。一种复杂类型:object。代码类型只有一种形式就是function。

2:如何判断javascript的类型

可以使用typeof函数

例如

var name = 'mdemo';
console.log(typeof name);  // 'string'
还可以用instanceof

3:javascript的作用域

javascript和其他语言不同,不存在花括号之间的块级作用域,而是用函数来进行作用域的划分。

4:javascript中数组的常用方法

concat--将两个数组连接起来
splice--可以用来删除、添加、替换

5:javascript中数组删除某一元素如何实现

找到要删除的元素的索引,然后使用splice(index,1)删除

6:函数中的arguments是数组吗

不是数组,typeof 可以看到是 object类型,而且arguments还有callee方法,所以不会是数组的。

7:说一下函数执行结果

window.name = 'gdemo';
var me = { name = 'mdemo'};
function sayName(){
    console.log(this.name);
}
sayName();//gdemo
me.sayName = sayName;
me.sayName();//mdemo

8:javascript中如果体现面向对象的三大特性的

封装:javascript中没有类的概念,一般用functions去模拟
较好的封装代码事例
function Person (name,sex,age){
   this.name = name;
   this.sex  = sex;
   this.age  = age;
}
Person.prototype = {
     sayName : function(){
        console.log(this.name)
     }
}
这样封装的好处,所有的属性都是在构造函数中进行,每个对象单独一份,在函数中调用通过this获取当前对象的属性,函数只实例化一次。
继承:javascript的继承主要利用prototype
较好的继承方式
function SuperType(name){
     this.name = name;
     this.colors = ['red','blue','yellow'];
}
function SubType(name ,age){
     SuperType.call(this,name);//继承属性
     this.age = age;
}
SubType.prototype = new SuperType();继承方法
SubType.prototype.sayAge = function(){
   console.log(this.age);
}
多态:主要体现着函数的参数上面

9:什么叫做闭包

会造成内存泄漏的闭包
function alertID(){
    var element = document.getElementId("mdemo");
    element.onclick = function(){
        consol.log(element.id);
    
这个就形成了闭包,因为oncolick事件调用的时候,需要调用element变量,这样element永远都不会被回收,导致内存泄漏
修改后的版本
function alertID(){
    var element = doucment.getElementId('mdemo);
    var id = element.id;
    element.onclick = function(){
       console.log(id);
     }
    element = null;
}

10:javascript类型转换

1. Boolean(value):把值转换成Boolean类型;

2. Nnumber(value):把值转换成数字(整型或浮点数);

3. String(value):把值转换成字符串。

4.parseXXX

11:domReady和onload的区别

onload是指整个网页所有内容都加载完毕

domready是指网页的dom元素加载完毕即可不用等待元素内容的加载

12:离线存储

manifest:相当于一个缓存的配置文件,配置的内容将会默认加载缓存

如果想更新的话,通过修改manifest文件。主要用于文件的缓存。

localstorage:可以通过cookie 来设置版本号,通过服务器去获得版本号,以此来更新内容。主要用于游戏存档和js css代码存储

13:动态加载如何实习

其实主要考的是

window.onscroll = function(){console.log(document.body.scrollTop);}

滚动条的滚动事件和滚动距离

14:事件冒泡

例如列表中元素的触发事件是一样的,那么多列表不可能一一设置事件,这时可以设置其父元素的事件。

<script type="text/javascript">
function showMsg(obj,e)
{
    alert(obj.id);
    stopBubble(e)
}

//阻止事件冒泡函数
function stopBubble(e)
{
    if (e && e.stopPropagation)
        e.stopPropagation()
    else
        window.event.cancelBubble=true
}
</script>


15:一道 JavaScript 字符串去重的题目

var str = 'aagbdfced';

假设现在有一个字符串变量 str,要求实现一个函数,传入 str,返回字符串中去重相同字符的结果(本例为 agbdfce)。

要求

  1. 占用内存尽可能的少
  2. 效率尽可能的高
  3. 字符串字符的范围为 ASCII 字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值