(四)JS基础知识一(深入分析变量类型和计算)【不会变量,别说你会JS】
JS基础知识一(变量类型和计算)
- 提问
- 变量类型
- 值类型 vs 引用类型 (堆栈模型)
- 值类型
- 引用类型
- typeof 运算符
- 深拷贝
- 变量计算
- 字符串拼接
- ==
- if语句和逻辑运算
- if语句
- 逻辑判断
提问
- typeof 能判断哪些类型
- 何时使用=何时使用
- 值类型和引用类型区别
- 手写深拷贝
变量类型
值类型 vs 引用类型 (堆栈模型)
值类型
//常见值类型
let a //undefined
const s = 'abc' //string
const n = 100 //number
const b = true //boolean
const s = symbol('s') //symbol
//值类型
let a = 100
let b = a
a = 200
console.log(b) //100
引用类型
//常见引用类型
const obj = { x: 100 }
const arr = ['a', 'b', 'c']
const n = null //特殊引用类型,指针指向空地址
//特殊引用类型,但不用于存储数据,没有"拷贝"、"复制函数"这一说
function fn(){}
//引用类型
let a = { age: 20 }
let b = a
b.age = 21
console.log(a.age) //21
typeof 运算符
- 识别所有值类型(undefined、string、number、boolean、symbol)
- 识别函数 function
console.log(typeof console.log) //function
console.log(typeof function(){}) //function
- 判断是否是引用类型(不可再细分
console.log(typeof null) //object
console.log(typeof {x:100}) //object
深拷贝
- 注意判断值类型和引用类型
- 注意判断数组还是对象
- 递归
/*** 深拷贝* @param {Object} obj 要拷贝的对象*/
function deepClone(obj = {}) {if (typeof obj !== 'object' || obj == null) {// obj 是 null ,或者不是对象和数组,直接返回return obj}// 初始化返回结果let resultif (obj instanceof Array) {result = []} else {result = {}}for (let key in obj) {// 保证 key 不是原型的属性if (obj.hasOwnProperty(key)) {// 递归调用!!!result[key] = deepClone(obj[key])}}// 返回结果return result
}
const obj1 = {age: 20,name: 'xxx',address: {city: 'beijing'},arr: ['a', 'b', 'c']
}const obj2 = deepClone(obj1)
obj2.address.city = 'shanghai'
obj2.arr[0] = 'a1'
console.log(obj1.address.city)
console.log(obj1.arr[0])
变量计算
字符串拼接
console.log(100 + '20') //10020
任何类型内容+字符串类型内容相当于字符串拼接,注意转换类型
==
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){}
if语句和逻辑运算
if语句
- truly变量:!!a === true的变量
if语句中只有truly变量才会执行 - falsely变量:!!a === false的变量
除了!!0、!!NaN、!!’’、!!null、!!undefined、!!false,其他都是truly变量
逻辑判断
- &&
- ||
- !
console.log(10 && 0) //0
console.log(0 && 10) //0
console.log('' || 'abc') //'abc'
console.log('abc' || '') //'abc'
console.log(!window.abc) //true
(四)JS基础知识一(深入分析变量类型和计算)【不会变量,别说你会JS】相关推荐
- Js基础——变量类型和计算
JS基础--变量类型和计算 一.基本数据类型 二.引用类型 三.typeof判断数据类型 四.浅拷贝与深拷贝 4.1 浅拷贝 4.2 深拷贝 五.数据类型转换 5.1== 和 === 一.基本数据类型 ...
- (七)JS基础知识四(搞定异步)【三座大山之三,必考!!!】
JS基础知识四(异步) 提问 单线程 应用场景 callback hell和promise 提问 同步和异步的区别是什么 手写用Promise加载一张图片 前端使用的异步的场景有哪些 单线程 JS是单 ...
- 了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化
js基础知识中的作用域和闭包 一.作用域 1.作用域.自由变量简介 (1)作用域定义 (2)作用域实例演示 (3)自由变量定义 (4)自由变量实例演示 2.作用域链简介 (1)作用域链定义 (2)作用 ...
- JS基础知识学习(一)
JS基础知识 前端开发常用的浏览器 谷歌浏览器(chrome):Webkit内核(v8引擎) 火狐浏览器(firefox):Gecko内核 欧朋浏览器(opera):Presto内核 IE浏览器:Tr ...
- (五)JS基础知识二(通过图理解原型和原型链)【三座大山之一,必考!!!】
JS基础知识二(原型和原型链) 提问 class 继承 类型判断(instanceof) 原型 原型关系 基于原型的执行规则 原型链 说明 提问 如何准确判断一个变量是不是数组 class的原型本质 ...
- js基础知识学习(二)
JS基础知识 JavaScript 数据类型转换 把其它数据类型转换为number类型 isNaN .Number.parseInt.parseFloat 在进行加减乘除数学运算的时候 true-&g ...
- 前端学习笔记(js基础知识)
前端学习笔记(js基础知识) JavaScript 输出 JavaScript 数据类型 常见的HTML事件 DOM 冒泡与捕获 流程控制语句 for..in 计时器 let,var,const的区别 ...
- php插入js教程,JavaScript_JavaScript入门教程(2) JS基础知识,在什么地方插入 JavaScript Ja - phpStudy...
JavaScript入门教程(2) JS基础知识 在什么地方插入 JavaScript JavaScript 可以出现在 HTML 的任意地方.使用标记,你可以在 HTML 文档的任意地方插入 Jav ...
- (六)JS基础知识三(走进作用域和闭包)【三座大山之二,不会闭包,基本不会通过】
JS基础知识三(作用域和闭包) 提问 作用域 自由变量 闭包 this 提问 this的不同应用场景,如何取值 手写bind函数 实际开发中闭包的应用场景,举例说明 创建10个a标签,点击的时候弹出对 ...
最新文章
- module.exports 和 export default
- 13个月才跑通GitHub模型,机器学习科研入门太难了吧
- 如何最好一个管理者?
- java mac postgresql_Mac上安装配置和简单使用PostgreSQL(仍然很不懂)
- 这次是在没有外网yum仓库的情况下搭建内网yum仓库和无人值守pxe装机
- asm 比 ucontext 快
- meta name=viewport content=width=device-width,minimum-scale=1.0,maximum-scale=1.0/
- 学习笔记(48):Python实战编程-grid布局
- UML入门之类图教程
- path hdu6705
- python 根据名称获取pid_【Python学习笔记】76、常用第三方模块psutil
- cesium添加填充_cesium编程中级(四)使用渐变纹理
- php 请求远程链接
- C语言基础函数(二)
- 如何在普通 UIViewController 中使用 UITableView
- Java程序设计基础
- 编写函数计算正方体体积
- 正确使用ViewStub
- H5手写签名,适用于手机网页、电脑网页(IE9+)
- 垃圾小白羊leetcode刷题记录2
热门文章
- SMS短信通API——(1)Java应用发送手机短信
- Python实现多行数据读入
- TensorFlow学习笔记(十七)tf.nn.conv2d
- elasticsearch 安装过程中可遇到的问题
- Elasticsearch等同八大全能型的数据产品对比
- 为什么国内SaaS很难爆发
- 聊聊高并发(十七)解析java.util.concurrent各个组件(一) 了解sun.misc.Unsafe类
- python的中文文本挖掘库snownlp进行购物评论文本情感分析实例
- 并发工具类(一)等待多线程完成的CountDownLatch
- eclipse下web开发中缓存问题