JavaScript总结

来源:互联网 发布:学python能做什么 编辑:程序博客网 时间:2024/06/03 17:52

1,javascript中typeof返回哪些数据类型?

  • Object
  • number(数值)
  • function(函数)
  • boolean
  • undefined(未定义)
  • string

2,js中强制类型转换和隐士类型转换?

  • 强制:parseInt(),parseFloat(),number()
  • 隐式:==(会自动转换)和===(不会自动转换)

3,split()和join()的区别?

  • split()是切割成数组的形式。
  • join()是将数组转换成字符串

4,数组方法pop、push、unshift、shift区别

  • push尾部添加
  • pop尾部删除
  • unshift头部添加
  • shift头部删除

5,事件绑定和普通事件有什么区别?

  • 事件绑定是指把事件注册到具体元素之上
  • 普通事件是指可以用来注册的事件

6,javascript的本地对象,内置对象和宿主对象

  • 本地对象为array obj regexp等可以new实例化
  • 内置对象为gload Math 等不可以实例化的
  • 宿主为浏览器自带的document,window 等

7,document load 和document ready的区别

  • Document.onload 是在结构和样式加载完才执行js
  • Document.ready原生中没有这个方法,jquery中有 jQuery(document).ready(function(){});

8,javaScript的事件流模型都有什么?

  • “事件冒泡”:事件开始由最具体的元素接受,然后逐级向上传播

  • “事件捕捉”:事件由最不具体的节点先接收,然后逐级向下,一直到最具体的

  • “DOM事件流”的三个阶段:事件捕捉,目标阶段,事件冒泡

9,看下列代码输出为何?解释原因。

 1 var a; 2 alert(typeof a); // undefined 3 alert(b); // 报错

解释:Undefined是一个只有一个值的数据类型,这个值就是“undefined”,在使用var声明变量但并未对其赋值进行初始化时,这个变量的值就是undefined。而b由于未声明将报错。注意未申明的变量和声明了未赋值的是不一样的。

10,看下列代码,输出什么?解释原因。

var a = null;alert(typeof a); //object解释:null是一个只有一个值的数据类型,这个值就是null。表示一个空指针对象,所以用typeof检测会返回”object”。

11,看下列代码,输出什么?解释原因。

var undefined;# undefined与null相等,但不恒等(===)undefined == null; // true# 一个是number一个是string时,会尝试将string转换为number1 == true;   // true# 尝试将boolean转换为number,0或12 == true;   // false0 == false;  // true# 尝试将Object转换成number或string,取决于另外一个对比量的类型0 == '';     // trueNaN == NaN;  // false[] == false; // true[] == ![];   // true# 对于0、空字符串的判断,建议使用 “===” 。“===”会先判断两边的值类型,类型不匹配时为false。

12,foo = foo||bar ,这行代码是什么意思?为什么要这样写?

  • 如果foo存在,值不变,否则把bar的值赋给foo。
  • 短路表达式:作为”&&”和”||”操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。

13,怎样添加、移除、移动、复制、创建和查找节点

创建新节点

  • createDocumentFragment() //创建一个DOM片段
  • createElement() //创建一个具体的元素
  • createTextNode() //创建一个文本节点

添加、移除、替换、插入

  • appendChild() //添加
  • removeChild() //移除
  • replaceChild() //替换
  • insertBefore() //插入

查找

  • getElementsByTagName() //通过标签名称
  • getElementsByName() //通过元素的Name属性的值
  • getElementById() //通过元素Id,唯一性

14,js创建函数的几种方式

# 第一种(函数声明): function sum1(num1,num2){   return num1+num2;}# 第二种(函数表达式):var sum2 = function(num1,num2){   return num1+num2;}# 第三种(函数对象方式):var sum3 = new Function("num1","num2","return num1+num2");

15,documen.write和 innerHTML 的区别?

  • document.write 能重绘整个页面
  • innerHTML 可以重绘页面的一部分

16,js哪些操作会造成内存泄漏?

  • 内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。
  • 垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0,或对该对象的惟一引用是循环的,那么该对象的内存即可回收。
    1. setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。
    2. 闭包
    3. 控制台日志
    4. 循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)

17,阻止冒泡的方法

function stopPropagation(e) {      e = e || window.event;      if(e.stopPropagation) { //W3C阻止冒泡方法          e.stopPropagation();      } else {          e.cancelBubble = true; //IE阻止冒泡方法      }  }  document.getElementById('aa').onclick = function(e) {      stopPropagation(e);  }

18,简述link和import的区别?

  • 区别1:link是XHTML标签,除了加载CSS外,还可以定义RSS等其他事务;@import属于CSS范畴,只能加载CSS。
  • 区别2:link引用CSS时,在页面载入时同时加载;@import需要页面网页完全载入以后加载。
  • 区别3:link是XHTML标签,无兼容问题;@import是在CSS2.1提出的,低版本的浏览器不支持。
  • 区别4:link支持使用Javascript控制DOM去改变样式;而@import不支持。

19,javaScript代码运行两个阶段:

  • 阶段一:预解析,就是把所有的函数定义提前,所有的变量声明提前,但是,变量的赋值不提前。

  • 阶段二:执行,就是从上到下执行。但以下函数除外:

    • setTimeOut()
    • setInterval()
    • ajax的回调函数,
    • 事件中的函数需要触发才能执行。3 
原创粉丝点击