常见值类型:
let a; //undefined

let s = 'abc';
let n = 100;
let b = true;
let sb = Symbol('s');
let nn = NaN
 
常见引用类型:
const obj = {x: 100};
const arr = [1, 2, 3];
const n = null;//特殊引用类型,指针指向为空
// 特殊引用类型,但不用于存储数据,所以没有“拷贝,复制函数”这一说
function fn(){}
console.log(typeof obj) //obj
console.log(typeof arr) //obj
console.log(typeof n)   //obj
console.log(typeof fn)  //function
 
typeof运算符:
1、识别所有的值类型
2、识别函数
3、判断是否是引用类型 (不可再细分)

let a; //undefined
let s = 'abc';
let n = 100;
let b = true;
let sb = Symbol('s');
console.log(typeof a);// 'undefined'
console.log(typeof s);// 'string'
console.log(typeof n);// 'number'
console.log(typeof b);// 'boolean'
console.log(typeof sb);// 'symbol' /*判断函数*/
function fn(){}
console.log(typeof fn); // 'function' /*判断是否是引用类型 (不可再细分)*/
console.log(typeof null); // 'object'
console.log(typeof []); // 'object'
console.log(typeof {}); // 'object'
深拷贝:

const obj = {
a: 100,
b: {
b1: [1, 2, 3],
b2: 'string'
},
c: ['a', 'b', 'c']
} /*
* 没做深拷贝的效果
const obj2 = obj
obj2.a = 200
obj2.b.b2 = 'abc123'
obj2.c[0] = 'aa'
console.log(obj)
console.log(obj2) obj2修改的内容会影响obj的内容,因为他们修改的都是同一个堆内容
* */ const obj2 = deepClone(obj);
obj2.a = 200
obj2.b.b2 = 'abc123'
obj2.c[0] = 'aa'
console.log(obj)
console.log(obj2) /**
* 深拷贝
* @param {Object} obj 要深拷贝的对象
* */
function deepClone(obj = {}) {
// obj如果不是引用类型,或者是null,直接返回
if (typeof obj !== 'object' || obj == null) {
return obj
}
// 初始化返回结果
let result;
if (obj instanceof Array) {
result = []
} else {
result = {}
}
// 遍历obj
for (let key in obj) {
// 保证key不是原型的属性
if (obj.hasOwnProperty(key)) {
// 递归调用
result[key] = deepClone(obj[key])
}
}
return result
}
类型转换常考考点:
1、字符串拼接
let a = 100 + 10;//110
let b = 100 + '10';// '10010'
let c = true + '10';// 'true10'
 
2、==运算符
100 == '100' // true
0 == '' // true
0 == false // true
false == '' // true
null == undefined // true
 
// ==运算符的使用场景
// 除了==null之外,其他一律都用 === ,例如:
const obj = {x:100}
if(obj.a == null){}
// 相当于: if(obj.a === null || obj.a === undefined){}
 
3、if语句和逻辑运算
truly变量:!!a === true 的变量
falsely变量:!!a === false 的变量
以下是falsely变量,除此之外都是truly变量
    /*
    * !!0 === false
    * !!NaN === false
    * !!'' === false
    * !!null === false
    * !!undefined === false
    * !!false === false
    * */
在if语句中的判断就是判断是truly变量还是falsely变量。truly变量就是为真,falsely变量就是为false
 
逻辑判断 与或非 && || !
 
4、new运算符的实现机制
首先创建了一个新的 空对象
设置原型,将对象原型设置为函数的 prototype 对象
让函数的 this 指向这个对象,执行构造函数的代码(为这个新对象添加属性)
判断函数的返回值类型,如果是值类型,返回创建的对象。如果是引用类型,就返回这个引用类型的对象。
 

前端面试题整理——Javascript基础的更多相关文章

  1. 前端面试题整理---JS基础

    为了督促自己学习,整理了一下前端的面试题 JavaScript: JavaScript 中如何监测一个变量是String类型? typeof(obj)==="string"; ty ...

  2. 前端面试题整理—JavaScript篇(一)

    1.JS的基本数据类型和引用数据类型有哪些,两者区别 基本数据类型->string.number.Boolean.null.undefined.symbol 引用数据类型->array.o ...

  3. 前端面试题整理——javaScript部分

    (1)typeof 和 instanceof 1.typeof 对于基本数据类型(boolean.null.undefined.number.string.symbol)来说,除了 null 都可以显 ...

  4. 前端面试题整理—JavaScript篇(二)

    1.使用js实现一个可持续的动画 2.实现一个可以自由拖动的悬浮框 3.实现一个倒计时效果 4.使用js仿写一个原生下拉列表框 5.创建10个<a>标签,点击的时候弹出对应的序号 6.实现 ...

  5. 前端面试题 之 JavaScript

    昨天我们一起分享了关于html和css的面试题<前端面试题之Html和CSS>,今天我们来分享关于javascript有关的面试题.我面试的时候最害怕面试官问我js了,因为我真心不擅长这个 ...

  6. 【web前端面试题整理02】前端面试题第二弹袭来,接招!

    前言 今天本来准备先了解下node.js的,但是,看看我们一个小时前与一个小时后的差距: 既然如此,我们继续来搜集我们的前端面试题大业吧!!! 特别感谢玉面小肥鱼提供哟,@玉面小飞鱼 题目一览 Jav ...

  7. 前端面试题(JavaScript)

    (前端面试题大全,持续更新) 箭头函数特点?箭头函数和普通函数的区别 手写懒加载(考虑防抖和重复加载问题) 手写bind(为什么要加预参数,为什么要加new) apply, call, bind ne ...

  8. 【web前端面试题整理06】成都第一弹,邂逅聚美优品

    前言 上周四回了成都,休息了一下下,工作问题还是需要解决的,于是今天去面试了一下,现在面试回来了,我感觉还是可以整理一下心得. 这个面试题整理系列是为了以后前端方面的兄弟面试时候可以得到一点点帮助,因 ...

  9. 2019届校招前端面试题整理——HTML、CSS篇

    前言 2019届校招陆陆续续开始了,整理了一些高频的面试题. HTML部分 1. 什么是<!DOCTYPE>? DOCTYPE是html5标准网页声明,且必须声明在HTML文档的第一行.来 ...

随机推荐

  1. (六)目标检测算法之YOLO

    系列文章链接: (一)目标检测概述 https://www.cnblogs.com/kongweisi/p/10894415.html (二)目标检测算法之R-CNN https://www.cnbl ...

  2. Tableau学习step1一Tableau概述

    本文首发于博客冰山一树Sankey,去博客浏览效果更好. 一.Tableau优缺点 优点 ·简单易用,只要是会用 EXCEL,几分钟就可掌握 Tableau的基本用法 急速高效 ·结果美观 ·轻松整合 ...

  3. mysql通过mysqldunp命令重做从库详细操作步骤

    mysql通过mysqldunp命令重做从库详细操作步骤 背景 生产环境上的主从复制集群,因为一些异常或人为原因,在从库做了一些操作,导致主从同步失败.一般修复起来比较麻烦,通过重做mysql从库的方 ...

  4. Python 完美诠释"高内聚"概念的 IO 流 API 体系结构

    1. 前言 第一次接触 Python 语言的 IO API 时,是惊艳的.相比较其它语言所提供的 IO 流 API . 无论是站在使用者的角度还是站在底层设计者的角度,都可以称得上无与伦比. 很多人在 ...

  5. JZ-023-二叉搜索树的后序遍历序列

    二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true,否则返回false.假设输入的数组的任意两个数字都互不相同. 题目链接: 二叉 ...

  6. LGP5071题解

    我给这道题提供了314次提交qwq 题目大意 给定一个长为 \(n\) 的序列,每次询问给定一个 \(L\) 和 \(R\),求 \([L,R]\) 中所有数乘起来的质因数个数,答案对 \(19260 ...

  7. CF1534F1题解

    首先,对于一个在第 \(i\) 行 \(j\) 列的沙子,如果他开始下降,他能够使哪些沙子下降呢? 很容易得知是第 \(j-1,j,j+1\) 列所有行号不小于 \(i\) 的沙子. 对于沙子 \(u ...

  8. ArcMap操作随记(7)

    1.栅格分辨率调整 [重采样] 2.点集数据对插值模型精度检验 test数据→[子集要素](地统计分析)→train→[插值]→[多值提取至点]→[字段计算器](Abs([value]-[spline ...

  9. python中文及符号检测工具带GUI界面

    import tkinter import webbrowser import re #本程序是一个中文字符和中文检测工具 #中文字符自己添加,我只添加了一点 #输入字符串,点击检查文本即可判断有没有 ...

  10. 千兆网数据CRC检验和过滤

    项目简述 本次项目在计算机将图像数据信息通过千兆网发送给FPGA后,由于接收到的数据可能混乱和无效,需要对数据CRC校验和无效包过滤. 项目原理及框图 对iddr_ctrl模块的输入数据和使能信号,分 ...