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的定义和用法:返回值是一个字符串,用来说明变量的数据类型,细节:
  1. typeof一般只能返回如下几个结果:number、boolean、string、function、object、undefined
  2. typeof来获取一个变量是否存在,如if(typeof a!="undefined"){(alert("OK")},而不要去使用if(a)因为a如果不存在未声明则会出错。
  3. 对于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)的更多相关文章

  1. 前端面试准备笔记之JavaScript(02)

    01. this的典型应用场景 this在各个场景中取什么值,是在函数执行的时候确认的,不是在定义的时候确认的. 普通函数执行 返回window function fn1() { console.lo ...

  2. 前端面试准备笔记之JavaScript(04)

    01. DOM的本质 xml是一种可扩展的标记性语言,可扩展就是可以描述任何结构的数据,他是一棵树,可以自定义标签,可以自己扩展. html也是一种特定的xml,他规定了一些标签的名称,结构与xml是 ...

  3. 前端面试准备笔记之JavaScript(01)

    1.1 typeof 能判断哪些类型? typeof可以识别所有的值类型 typeof可以识别函数 //function typeof可以判断是否是引用类型(不可以再细分) //object 1.2 ...

  4. 前端面试知识点集锦(JavaScript篇)

    目录 1.谈谈你对Ajax的理解?(概念.特点.作用) 2.说说你对延迟对象deferred的理解? 3.什么是跨域,如何实现跨域访问? 4.为什么要使用模板引擎? 5.JavaScript是一门什么 ...

  5. 问得最多的十个JavaScript前端面试问题

    我知道有很多人不同意这种类型的面试.其实不管你喜不喜欢,你都得接受.尤其当你是自学的,而且要申请第一份工作时.   我估计很多有人其它方法来证明他自己,像Github/ 项目地址可能是非常理想的证明方 ...

  6. web前端面试试题总结---javascript篇

    JavaScript 介绍js的基本数据类型. Undefined.Null.Boolean.Number.String. ECMAScript 2015 新增:Symbol(创建后独一无二且不可变的 ...

  7. 前端面试之JavaScript的基本数据类型!

    前端面试之JavaScript的基本数据类型! JS的基本数据类型 数字 字符串 布尔值 JavaScript中有两个特殊的原始值: null (空) 和undefined (未定义), , 它们不是 ...

  8. 前端面试之JavaScript中数组的方法!【残缺版!!】

    前端面试之JavaScript中数组常用的方法 7 join Array.join()方法将数组中所有元素都转化为字符串并连接在-起,返回最后生成的字 符串.可以指定一个可选的字符串在生成的字符串中来 ...

  9. 前端面试之JavaScript中的闭包!

    前端面试之JavaScript中的闭包! 闭包 闭包( closure )指有权访问另一个函数作用域中变量的函数. ----- JavaScript 高级程序设计 闭包其实可以理解为是一个函数 简单理 ...

随机推荐

  1. 第五章 Gateway--服务网关

    欧克 ,我接着上篇第四章 Sentinel–服务容错,继续写下去 开始网关之旅 5.1网关简介 大家都都知道在微服务架构中,一个系统会被拆分为很多个微服务.那么作为客户端要如何去调用 这么多的微服务呢 ...

  2. 使用Github快速的寻找项目

    作为一个3年的码农昨天在学习项目,顺便总结一下 ,在Github找项目的几个常用方式 ,如果对您有帮助,可以点个关注,便于下次光顾! 首先我们来看一下常用命令 1.指定搜索方式 搜索文件中有spiri ...

  3. idea中Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.

    我本机安装的mysql版本是5.7的,那么IDEA要连接mysql也应该匹配下驱动版本.把Driver改成MySQL for 5.1就可以了 在点击Test Connection测试下,成功啦!

  4. 通过python的socket库实现简易即时通讯小程序

    前言 最近学习了一下有关tcp协议和socket有关的知识,看到许多socket实战都喜欢教如何做一个聊天程序,于是想着试试能不能不看教程自己写一个.当然我没太多时间做一个像qq一样的ui界面,所以做 ...

  5. 网易163 docker镜像

    $ sudo echo "DOCKER_OPTS=\"--registry-mirror=http://hub-mirror.c.163.com\"" > ...

  6. umi3.2+ targets ie不生效的问题

    直接创建umi项目 config.ts对targets{ie:11}不生效 错误方法1: 在入口页app.tsx新增 import @babel/polyfill 错误方法2: 在入口页app.tsx ...

  7. gitlab git仓库地址修改后更新方法

    背景 由于gitlab地址修改后导致本地仓库的远程仓库失效 解决办法 直接修改本地的远程仓库地址 - 进入项目地址git remote -v 查看旧地址 - 更新指令 git remote set-u ...

  8. WPF学习笔记01_XAML之简介

    简介 XAML (发音"zammel" 咋么儿),用于实例化.NET对象的标记语言,主要用于构造WPF的用户界面.类似html标记语言. 通过XAML,程序员可以用代码的方式对界面 ...

  9. Django(投票程序)

    Django是一个web框架,python编写的. MTV模式 Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同 -M代表模型(Model ):负责 ...

  10. 【JavaWeb】i18n 国际化

    i18n 国际化 什么是 i18n 国际化(Internationalization)指的是同一个网站可以支持多种不同的语言,以方便不同国家,不同语种的用户访问. 希望相同的一个网站,不同人访问的时候 ...