文章目录

  • JS中的数学运算
      • 模板字符串
      • 布尔类型
      • !的用法
        • !=:不等于
        • !取反:把!后的字符转化为布尔类型,然后再取反。
        • !!在一个布尔类型的基础上取反再取反,相当于转化为布尔类型。
      • null和undefined的区别
    • 对象数据类型object
    • 数据类型的检测及堆栈内存的区别
      • 数据类型的检测
        • 数据类型typeof
        • typeof 局限性
          • 基本数据类型与引用数据类型的区别(划重点)

JS中的数学运算

• 加减乘除±*/
• 取余%
1、加号,在JS中既有数学运算,也有字符串拼接的意思(只要加号两边的任意一边出现字符串,则变为字符串拼接)。
如果加号两边有引用数据类型,则先把引用数据类型转为字符串,再做加法。
2、除了加号以外,其余的情况都是数学运算(如果遇到非数字类型,需要基于Number把其强制转换为数字类型,然后在进行运算的)。

模板字符串

项目中经常把一些变量的值拼接到指定的字符串中
ES6中的模板字符串就是为了解决传统字符串拼接中的问题(反引号:TAB上面的撇):

${}中存放变量或者其它的JS表达式即可,很简单的完成字符串拼接
// 完成字符串拼接处理:2020年03月03日 12:00:00let year = '2020';let month = '03';let day = '03';let hours = '12';let minutes = '00';let seconds = '00';
// ES6中的模板字符串就是为了解决传统字符串拼接中的问题(反引号 TAB上面的撇):${}中存放变量或者其它的JS表达式即可,很简单的完成字符串拼接
    let result = `${year}年${month}月${day}日 ${hours}:${minutes}:${seconds}`;console.log(result);// let str='<div class="box" id="box">';// str+='<h2 class="title">哈哈</h2>';// str+='<ul class="item">';// str+='<li></li>';// // ..../* let str = `<div class="box" id="box"><h2 class="title">哈哈</h2><ul class="item">${[10,20,30].map(item=>{return `<li>${item}</li>`;}).join('')}</ul></div>`;console.log(str); */// 传统的拼接方式,我们需要在字符串中基于 "++" 或者 '++' 的方式把变量拼接到字符串中(这种方式涉及很多恶心的规则,一不留神就容易拼错)// let result = year + "年" + month + "月" + day + "日 " + hours + ":" + minutes + ":" + seconds;// let result = "" + year + "年" + month + "月日 ::";// console.log(result);
布尔类型

只有两个值:true false
Boolean()
把其他数据类型的值转换为布尔类型
只有 0、NaN、空字符串、null、undefined 这五个数据类型转换为布尔类型的false,其余的都会变为true

!的用法
!=:不等于
!取反:把!后的字符转化为布尔类型,然后再取反。
!!在一个布尔类型的基础上取反再取反,相当于转化为布尔类型。
/* 条件判断中,每一个条件最后一定是true/false */// if (1 == 1) {}// if (1) {//  //=>写一个值,也是要把这个值转换为布尔,然后校验程序的真假// }// if (3 + '3px') {} //=>3 + '3px' =>'33px'  真// if (3 - '3px') {} //=>3 - '3px' =>NaN   假
null和undefined的区别

null:表示没有对象,即该处不应该有值
undefined表示缺少值,即此处应该有值,但还没定

对象数据类型object

每一个对象都是由零到多组 属性名(key键):属性值(value值) 组成的,或者说有多组键值对组成的,每一组键值对中间用逗号分隔。
var obj={name:’珠峰’;age:8};
属性:描述这个对象特点特点特征的
对象的属性名是字符串或者数字格式的,但最终都会变为字符串,存储的属性值可以是任何的数据类型
对象名.属性名:忽略了属性名的单双引号
对象名[‘属性名’]:不能忽略单双引号

var obj={name:'我亲爱的',age:8,friend:['我爱你','我不爱你'],0:100};
//=>获取某个属性名对应的属性值
obj.name
obj['name']
//=>获取属性名为数字的属性名
//obj.0 语法不支持
obj[0]//obj['0']
//=>如果操作的属性名在对象中不存在,获取的结果是undefined
//=>设置/修改:一个对象的属性名是不能重复的(唯一性),如果之前存在就是修改属性值的操作,反之不存在就是新设置属性的操作
obj.sex='男';
obj['age']=9;
//=>删除
obj.sex=null; 假删除
delete obj.sex; 真删除

数据类型的检测及堆栈内存的区别

数据类型的检测

• typeof:检测数据类型的运算符
• instanceof:检测某个实例是否属于这个类 只适用引用数据类型
• constructor:获取当前实例的构造器
• Object.prototype.toString.call:获取当前实例的所属类信息

数据类型typeof

返回值是一个字符串,字符串中内容是当前变量的数据类型
typeof null ⇒ ‘object’
typeof 实现call的对象 ⇒ ‘function’
typeof 未实现call的对象 ⇒ ‘object’
console.log(typeof str);// “number”
console.log(typeof “188”);// “string”
console.log(typeof true);// “boolean” 布尔类型
console.log(typeof null);// “object” 空对象指针
console.log(typeof undefined);//”undefined”

typeof 局限性

1.typeof null –> “object”:因为null虽然是单独的一个数据类型,但是它原本的意思是空对象指针,
浏览器使用typeof检测的时候会把他按照对象来检查
2.不能够区分对象数据类型下面具体的对象,数组、正则都是object
console.log(typeof {});// “object”
console.log(typeof []);// “object”
console.log(typeof /\d/);// “object”
console.log(typeof function () {});// “function”


以下为各类型详解(正则除外)

基本数据类型与引用数据类型的区别(划重点)

JS 是运行在浏览器中的(内核引擎),浏览器会为JS提供赖以生存的环境(提供给JS代码执行的环境),叫做ECStack(Execution Context Stack 执行环境栈)=>栈内存或者全局作用域 window

var a=12;
var b=a;
b++;
console.log(a);
var n={name:'华为'};
var m=n;
m={name:'北京'};
console.log(n.name);

基本数据类型是按值操作的:在赋值的时候,是直接的把值赋值给变量即可。
引用数据类型是按照空间地址(引用地址)来操作的
var n={name:’华为’};
分三步操作:
1、浏览器首先会开辟一个新的存储空间(堆内存),目的是把对象中需要存储的内容(键值对)分别的存储在这个空间中,为了方便后期找到这个空间,浏览器给空间设定一个16进制的地址
2、创建一个变量n
3、把空间的地址赋值给变量

JS基础——数学运算相关推荐

  1. js解析数学运算公式

    js解析数学运算公式 已上传到npm,NPM包地址:https://www.npmjs.com/package/exec-mathexpress 示例demo //运行democonst execMa ...

  2. js进行数学运算,加法,减法,乘法,除法

    1.简单的数学运算 // 加法 const accAdd = (arg1, arg2) => {var r1, r2, m;try {r1 = arg1.toString().split(&qu ...

  3. 深度学习(10)TensorFlow基础操作六: 数学运算

    深度学习(10)TensorFlow基础操作六: 数学运算 1. Operation type 2. + - * / % // 3. tf.math.log & tf.exp 4. log2, ...

  4. 零基础学python编程思维---Task2 数学运算、字符串和文本、列表

    Task2 数学运算.字符串和文本.列表 一.基础部分 1.实现第一行代码和认识注释 print('hello world') 注释是由# 加相关备注,其目的就是其他开发者能够轻松的了解代码,注释不影 ...

  5. matlab数学运算规则,matlab数学运算基础

    matlab数学运算基础 MATLAB 数学运算基础 1/10 MATLAB 数学运算基础 目录 1 数据表示方法 2 矩阵的赋值 3 向量的赋值 4 用矩阵元素组成新矩阵 附:矩阵赋值中的标点符号 ...

  6. Python基础教程:对象及数字对象与数学运算

    1.什么是对象? Python语言中,所有的 数据 都被称之为 对象.Python代码,就是要 处理各种 对象 ,从而完成具体的任务. # 首行要顶格写,python对大小写敏感print ('hel ...

  7. numpy 学习汇总18.2 - 数学运算( 基础学习 tcy)

    数学运算 2018/6/18 2018/11/29 1.算术运算 # +, - ,*,/,//,%,divmod(),** or pow() # 1)运算符 a=np.arange(1,7).resh ...

  8. shell脚本基础(环境变量、重定向、数学运算、退出脚本)

    一.使用环境变量 1.环境变量 所谓环境变量,就是用来存储有关shell会话和工作环境信息的特性,这项特性允许你在内存中存储数据,以便程序或shell中运行的脚本能够轻松访问到它们.这也是存储持久数据 ...

  9. JAVA基础篇【工具类】MathUtil 数学运算辅助类TG【20130324整理】

    数学运算辅助类,希望对大家有所帮助 import java.math.BigDecimal; /** * 数学运算辅助类. * * @author Elfy * @date 2013年03月21日 * ...

最新文章

  1. Oracle原理: 行级锁和表级锁
  2. Linux服务器编程之:link()函数,ln命令,symlink,readlink,案例说明
  3. svg入门经典pdf_机器学习最好的入门课程是什么?
  4. 编程语言发展史上有哪些趣事?
  5. win10的一些命令,记一记
  6. gradle入门教程
  7. 编译原理 -- 词法分析程序设计
  8. 【弄nèng - Skywalking】入门篇(一)—— Skywalking安装与使用
  9. vue引入外部js文件(第三方js工具或者jq库)
  10. TIOBE 2015年6月编程语言排行榜
  11. win7字体大小怎么设置_怎么设置 win7系统excel2010定时保存和数据恢复的方案 -win7系统使用教程...
  12. AUTOSAR开发工具DaVinci Configurator里的Modules
  13. Unity之三维空间多点箭头导航
  14. 最近在 vscode 中借助 gcc 编译器来配置 c
  15. 典型相关分析(附SPSS操作)
  16. 江西省计算机专业好的二本大学排名,2020江西各大学全国排名,一本,二本大学排名.三本院校排名_一品高考网...
  17. 安卓代替系统默认电话应用
  18. R语言--股票数据分析
  19. 电脑pdf怎么转word文档格式?
  20. 非递归,不用栈实现二叉树中序遍历

热门文章

  1. win8.1的wifi连接受限怎么办
  2. 连环画《秦王斩荆柯》|大象特供
  3. java错误1601解决方法,未知错误1601解决方法
  4. 400万北漂女孩爆红朋友圈,背后的真相却让人泪奔了...
  5. Typora卡顿如何解决
  6. 前端好看的几组颜色值
  7. 问题生成(QG)总结
  8. chmod 755的含义 及drwxr-xr-x 的含义【drwxr-xr-x改为drwx------】(sixteen day second)
  9. JS 打印函数堆栈信息
  10. 【雪花图案】AI+ASS绘图代码分享