js篇

131 阅读3分钟

1. typeof返回哪些数据类型

"number"、"string"、"boolean"、"object"、"function"、“undefined"、 “symbol”(es6新增) 一共七种。

  • typeof运算符返回的都是字符串
  • 对于Array,Null等特殊对象使用typeof一律返回object,这正是typeof的局限性。
  • typeof 语法中的圆括号是可选项。
//number
typeof 37 === 'number';
typeof 3.14 === 'number';
typeof(42) === 'number';
typeof Math.LN2 === 'number';
typeof Infinity === 'number';
typeof NaN === 'number'; // 尽管NaN是"Not-A-Number"的缩写
typeof null === 'object'

2. Infinity

Infinity 属性用于存放表示正无穷大的数值。

Infinity 不是常量,可以把它设置为其他值。

无法使用 for/in 循环来枚举 Infinity 属性,也不能用 delete 运算符来删除它。

3. NaN

  • NaN 属性是代表非数字值的特殊值。
  • 该属性用于指示某个值不是数字。
  • 请使用 isNaN() 全局函数来判断一个值是否是 NaN 值。原因是 NaN 与所有值都不相等,包括它自己。
  • 方法 parseInt() 和 parseFloat() 在不能解析指定的字符串时就返回这个值。

4.简述typeof 和 instanceof 的作用

  • typeof返回一个字符串。 用于说明参数的类型。
  • instanceof返回一个布尔值。用于判断一个变量是否是某个对象(类)的实例。用于对象类型的判断
// 定义构造函数
function C(){}
function D(){}
var o = new C();
o instanceof C; // true,因为 Object.getPrototypeOf(o) === C.prototype
o instanceof D; // false,因为 D.prototype不在o的原型链上
o instanceof Object; // true,因为Object.prototype.isPrototypeOf(o)返回true
C.prototype instanceof Object // true,同上

5.列举js中的数据类型

(1) 原始类型(基本类型)

booleanstringnumbernullundefinedsymbol

(2)引用类型(复合类型或对象类型)

function、object、array

注意:值undefined实际上是从值null派生出来的,因此es把他们定义为相等。除此之外,null、undefined和其他任何结果的比较值都为false

null == undefined // true
null == '' // false
null == 0 // false
null == false // false
undefined == '' // false
undefined == 0 // false
undefined == false // false

访问方式的不同:

基本类型引用类型
操作和保存在变量实际的值值保存在内存中,js不允许直接访问内存,在操作的时候,操作的是对象的引用

6 例举3种强制类型转换和2种隐式类型转换?

强制(parseInt,parseFloat,number)隐式(== – ===);

隐式转化参考:chinese.freecodecamp.org/news/javasc…

7. javaScript是面向对象的吗?

准确的说js是基于对象的。 因为面向对象的机制并没有完善,需要我们人为的通过原型链和构造函数的继承(js的继承是基于原型链的)。 甚至在ES5中连类的概念都不完全,ES6中虽然完善类的概念(部分完善), 相比于传统的面向对象语言(如java),至今依然缺乏关于类成员私有变量,成员变量等特性的很好支持(可以实现但实现麻烦)。 以及关于静态方法静态属性的支持也不完善(Class中的static关键字,ES6中类静态方法已有支持,类静态变量是ES7提案)。 从这个角度,和java等传统的面向对象语言比较,我觉得js面向对象(即使ES6阶段)也是有先天不足的,所以比较认可JavaScript是基于对象这种说法。

8. document.write 和 innerHTML 的区别

  • write是document对象的一个方法,是在页面里写内容。它会覆盖页面内容,是写死的。

  • innerHTML是DOM元素对象的一个属性,属性设置或返回元素的开始和结束标签之间的 HTML。

    1document.write
    document.write("Hello World!");
    document.write("<h1>Hello World!</h1>")
    document.write("Hello World! ","Hello You! ","<p style='color:blue;'>Hello World!</p>")
    2.innerHTML
    <table border="1">
        <tr id="tr1">
              <th>Firstname</th>
              <th>Lastname</th>
        </tr>  
    </table>
    document.getElementById("tr1").innerHTML
    结果: <th>Firstname</th>
          <th>Lastname</th>
    <a id="myAnchor" href="//www.microsoft.com">Microsoft</a>;
    document.getElementById('myAnchor').innerHTML="RUNOOB";
    document.getElementById('myAnchor').href="//www.runoob.com";
    

9.innerHTML 和 innerText的区别