前端面试准备笔记之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")}}
前端面试准备笔记之JavaScript(03)的更多相关文章
- 前端面试准备笔记之JavaScript(02)
01. this的典型应用场景 this在各个场景中取什么值,是在函数执行的时候确认的,不是在定义的时候确认的. 普通函数执行 返回window function fn1() { console.lo ...
- 前端面试准备笔记之JavaScript(04)
01. DOM的本质 xml是一种可扩展的标记性语言,可扩展就是可以描述任何结构的数据,他是一棵树,可以自定义标签,可以自己扩展. html也是一种特定的xml,他规定了一些标签的名称,结构与xml是 ...
- 前端面试准备笔记之JavaScript(01)
1.1 typeof 能判断哪些类型? typeof可以识别所有的值类型 typeof可以识别函数 //function typeof可以判断是否是引用类型(不可以再细分) //object 1.2 ...
- 前端面试知识点集锦(JavaScript篇)
目录 1.谈谈你对Ajax的理解?(概念.特点.作用) 2.说说你对延迟对象deferred的理解? 3.什么是跨域,如何实现跨域访问? 4.为什么要使用模板引擎? 5.JavaScript是一门什么 ...
- 问得最多的十个JavaScript前端面试问题
我知道有很多人不同意这种类型的面试.其实不管你喜不喜欢,你都得接受.尤其当你是自学的,而且要申请第一份工作时. 我估计很多有人其它方法来证明他自己,像Github/ 项目地址可能是非常理想的证明方 ...
- web前端面试试题总结---javascript篇
JavaScript 介绍js的基本数据类型. Undefined.Null.Boolean.Number.String. ECMAScript 2015 新增:Symbol(创建后独一无二且不可变的 ...
- 前端面试之JavaScript的基本数据类型!
前端面试之JavaScript的基本数据类型! JS的基本数据类型 数字 字符串 布尔值 JavaScript中有两个特殊的原始值: null (空) 和undefined (未定义), , 它们不是 ...
- 前端面试之JavaScript中数组的方法!【残缺版!!】
前端面试之JavaScript中数组常用的方法 7 join Array.join()方法将数组中所有元素都转化为字符串并连接在-起,返回最后生成的字 符串.可以指定一个可选的字符串在生成的字符串中来 ...
- 前端面试之JavaScript中的闭包!
前端面试之JavaScript中的闭包! 闭包 闭包( closure )指有权访问另一个函数作用域中变量的函数. ----- JavaScript 高级程序设计 闭包其实可以理解为是一个函数 简单理 ...
随机推荐
- kubeadm部署k8s
Kubernetes技术已经成为了原生云技术的事实标准,它是目前基础软件领域最为热门的分布式调度和管理平台.于是,Kubernetes也几乎成了时下开发工程师和运维工程师必备的技能之一. 官方文档 ...
- 很多人不知道的Python 炫技操作:条件语句的写法
有的人说 Python 是一门 入门容易,但是精通难的语言,这一点我非常赞同. Python 语言里有许多(而且是越来越多)的高级特性,是 Python 发烧友们非常喜欢的.在这些人的眼里,能够写出那 ...
- 在飞儿云主机里使用酷Q时遇到相关问题的解决办法
情况1:酷Q Air版本可以使用,而Pro版本无法运行 解决方法如下: p.p1 { margin: 0; font: 13px "Helvetica Neue"; color: ...
- BF,BM,KMP,就这?
为保证代码严谨性,文中所有代码均在 leetcode 刷题网站 AC ,大家可以放心食用. 皇上生辰之际,举国同庆,袁记菜馆作为天下第一饭店,所以被选为这次庆典的菜品供应方,这次庆典对于袁记菜馆是一项 ...
- 高端面试必备:一个Java对象占用多大内存
这个问题一般会出现在稍微高端一点的 Java 面试环节.要求面试者不仅对 Java 基础知识熟悉,更重要的是要了解内存模型. Java 对象模型 HotSpot JVM 使用名为 oops (Ordi ...
- 有了它(powermock)再也不担心单元测试不达标了
为什么要写单元测试 优点:单元测试可以减少bug率,提升代码的质量.还可以通过单元测试来熟悉业务. 公司硬性要求:有些公司可能还会强制要求,每次新增代码.或者变更代码单测覆盖率要达到多少比例才能申请代 ...
- input输入框输入中文时,监听的input事件 屏蔽拼音状态
$(function () { $('#jh').off().on({ //中文输入开始 compositionstart: function () { cpLock = false; }, //中文 ...
- JavaDailyReports10_08
------------恢复内容开始------------ AWT组件 1.1Frame组件与Panel组件 1.1.1显示框架窗口 1 package awt; 2 3 import java.a ...
- k8s之DNS服务器搭建
一.导读 在使用k8s部署springboot+redis简单应用这篇文章中,spring boot连接redis是直接使用的IP连接,那么可不可以直接使用服务名称进行连接呢?答案是可以的,这就是k8 ...
- IdentityServer4 之Client Credentials走起来
前言 API裸奔是绝对不允许滴,之前专门针对这块分享了jwt的解决方案(WebApi接口裸奔有风险):那如果是微服务,又怎么解决呢?每一个服务都加认证授权也可以解决问题,只是显得认证授权这块冗余,重复 ...