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) 原始类型(基本类型)
boolean、string、number、null、undefined、symbol
(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。
1、document.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";