前端面试准备笔记之JavaScript(03)
01. 变量声明提升
在预解析的时候,成员变量和函数,被提升到最高的位置,方便其他程序访问。
- 可以先使用后声明。
- 只提升变量名,不提升变量值
- let const 声明的变量不具有变量声明提升。
// 先使用
x = 5; // 变量 x 设置为 5
elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x; // 在元素中显示 x
// 后声明
var x; // 声明 x
// 先声明和初始化了x
var x = 5; // 初始化 x
elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x + " " + y; // 显示 x 和 y
// y声明可以提升,但是y=7初始化并不会提升。
var y = 7; // 初始化 y
02. 面向对象
面向对象就是使用对象来进行开发,关注的是用什么对象可以实现功能,不去关注对象中细节,早期的是面向过程进行开发,面向对象可以理解为对面向过程的一个封装。
特性:
- 抽象性,就是说在一个具体的环境中,不知道这个数据集表示的是什么对象。
- 封装性,就是将一些复杂繁琐的步骤、操作方式包裹起来,对外暴露简单的接口,通过这个简单的接口实现复杂的功能。
- 继承性,对数据进行复用,就是本身没有但是别人有,可以从别人那里得到。
- 多态性,不同的变量调用同一个方法,得到的结果不同,这个调用称为多态。
03. new 操作符都做了什么
- 创建一个空对象,并且this变量引用了该对象,同时还继承了该函数的原型。
- 属性和方法被加入到this引用的对象中。
- 新创建的对象由this引用,应且最后隐士的返回this。
04. 如何准确判断一个变量是不是数组
a instaceof Array
05. 类型判断 instanceof
// 联系3.3示例
xialuo instanceof Student //true
xialuo instanceof People //true
xialuo instanceof Object //true
[] instanceof Array //true
[] instanceof Object //true
{} instanceof Object //true
06. 比较typeof与instanceof
相同点:javascript中typeof与instanceof常用来判断一个变量是否为空,或者是什么类型的。
- typeof的定义和用法:返回值是一个字符串,用来说明变量的数据类型,细节:
- typeof一般只能返回如下几个结果:number、boolean、string、function、object、undefined
- typeof来获取一个变量是否存在,如if(typeof a!="undefined"){(alert("OK")},而不要去使用if(a)因为a如果不存在未声明则会出错。
- 对于Array,Null等特殊对象使用typeof 一律返回object,这正是typeof的局限性。
- Instanceof定义和用法:instanceof用于判断一个变量是否属于某个对象的实例(实例可以理解为引用的意思)
// 实例演示
a instanceof b?alert("true"):alert("false"); //a是b的实例?真:假
var a = new Array();
alert(a instanceof Array); // true
alert(a instanceof Object) // true
// 如上,会返回true,同时alert(a instanceof Object)也会返回true;这是因为Array是Object的子类。
function test(){};
var a = new test();
alert(a instanceof test) // true
- 细节:
如下,得到的结果为"N",这里的instanceof测试的object是指js语法中的object,不是指dom模型对象。
if (window instanceof Object) {alert("Y") else {alert("N")}}

浙公网安备 33010602011771号