JavaScript基础语法概念之(数据类型、强制转换、运算符)

2023-11-02

数据类型:(数据类型就是字面量的类型)

JS的六种数据类型:

	String        字符串
	Number        数值
	Boolean       布尔值
	Null          空值
	Undefined     未定义
	Object        对象(引用数据类型)
  • 基本数据类型都是单一的值,值与值之间没有任何联系
  • 对象是一种复合数据类型,在对象中可以保存多个不同数据类型的属性
  • 对象的分类:
    ①内建对象(由ES标准定义的对象,在任何ES实现中都可以使用)
    ②宿主对象(由JS运行环境提供的对象,目前主要由浏览器提供,如BOM,DOM)
    ③自定义对象(由开发人员自己创建)

下面只介绍String、Number、Object


String 字符串

  • JS中字符串需要用引号引起来
  • 使用双引号或单引号都可以,但不能混用
  • 嵌套使用时要交替使用
  • 字符串中可以使用\作为转义字符

Number 数值

  • JS中所有的数值都是Number类型,包括整数和浮点数
  • 使用typeof检查数据类型,语法:typeof a;
  • JS中可以表示的最大值Number.MAX_VALUE,最小同理,如果表示的数字超过最大值,返回Infinity(正无穷)
  • NaN是一个特殊的数字,表示Not A Number,使用typeof检查一个NaN也会返回number

Object 对象
①创建对象

  • 构造函数(constructor):使用new关键字调用的函数

  • 构造函数是专门用来创建对象的函数

     var obj=new Object();
    

②向obj中添加属性

  • 属性:在对象中保存的值

  • 向对象添加属性语法:对象.属性名=属性值;

       obj.name="tom";
    

③读取对象中的属性

  • 读取对象中的属性语法:对象.属性名

  • 如果读取对象没有属性,不会报错,而会返回undefined

      console.log(obj.name);
    

④修改对象属性

  • 语法:对象.属性名=新值;

      obj.name="lerry";
    

⑤删除对象的属性

  • 语法:delete 对象.属性名

      delete obj.name;
    

强制转换:

将其他数据类型转换为String:
方法一:

  • 调用转换数据类型的toString()方法

  • 该方法不会影响原变量

  • 注意:null和undefined没有toString方法,调用会报错

      	var a=123;
      	a=a.toString();
    

方法二:

  • 调用String()函数
    (对于number和Boolean实际上就是调用tostring()方法
    但是对于null和undefined是直接转化为字符串)

      	var a=123;
      	a=String(a);
    

将其他数据类型转换为Number:
方法一:

  • 使用Number()函数
    ①如果是纯数字字符串直接转换为数字
    ②如果是字符串中有非数字内容,转化为NaN
    ③如果字符串是空串或者空格转化为0
    ④布尔–>数字,true转1,false转0
    ⑤null–>数字,转为0
    ⑥undefined–>数字,转为NaN

方法二:

  • parseInt()、parseFloat()专门用于字符串转换
    ①可以将字符串中有效地内容转换为Number
    ②对于非String类型,会先转化为String再操作

其他进制的数字:parseInt(a,10)中,10表示进制


将其他数据类型转换为Boolean:

  • 使用Boolean()函数
    ①数字–>Boolean,除了0和NaN其他都是true
    ②字符串–>Boolean,除了空串其他都是true
    ③null和undefined都是false
    ④object也是true

运算符(操作符):

(以下主要介绍不常见知识点)

算术运算符:+ - * / %
①typeof是一个运算符,可以获得一个值得类型
②对于非Number的数字进行运算时,会先转化为数值类型。
③如果对两个字符串进行相加,相当于拼接
④任何值和字符串做加法运算,会先转化为字符串,然后拼接,其他均是转为number
(这是一种隐式类型转换,由浏览器自动完成)
⑤任何值做-*/时都会自动转化为number

	var a="123";
    var b,c;
    b=a+1;
    c=a-1;
    console.log(b);
    console.log(c);

控制台输出:
1231
122


一元运算符:
+正号:不会对数字产生影响
-负号:取反
对于非Number类型的数值,它会先转化为Number,然后再运算
可以使用+来将字符串转化为number
自增++:使变量自身增加1
自减–:使变量自身减1

      var b;
      b=2+ +"5"+1;
      console.log(b);

控制台输出:8

关于++和–详细知识和c语言相同,这里不过多介绍,可以参见连接https://editor.csdn.net/md


逻辑运算符:! && ||
非布尔值进行&&、||运算时,先将其转化为布尔值,且返回原值
&&:两个值都为true,则返回后边的一个;两个值中有false,则返回靠前的false
||:如果第一个值是true直接返回第一个值;第一个值为false直接返回第二个值

    //false&&true
    console.log(0&&2);
    console.log(2&&0);
    //false&&false
    console.log(NaN&&0);
    console.log(0&&NaN);

在这里插入图片描述

    //false||true
    console.log(0||2);
    console.log(2||0);
    //false||false
    console.log(NaN||0);
    console.log(0||NaN);

在这里插入图片描述

赋值运算符:= += -= *= /= %
=:将符号右侧的值赋值给符号左侧的变量
+=: a+=5相当于a=a+5


关系运算符:> < >= <=

  • 如果关系运算符成立则返回true,如果不成立则返回false

非数值比较

  • 任何值和NaN做任何比较都是false
  • 对于非数值比较,会先将其转化为数字后再比较
  • 如果符号两侧都是字符串,分别比较字符串的Unicode编码
    (比较字符串时是一位一位的比,如果两位一样则比较下一位,所以借他对英文排序。比较中文时没有意义)
    console.log(10>null);
    console.log(true>false);
    console.log(10<="hello");
    console.log("1"<"6");
    console.log("11"<"6");

控制台输出:

Unicode编码输出:
①在字符串中用转义字符输出:\u四位编码(十六进制编码)
②在网页中使用Unicode编码&#编码 ;(十进制编码)


相等运算符:== != === !== ==:

  • undefined衍生自null,NaN不和任何值相等,包括它本身
    null==0–>false
    undefined ==null–>true
    ` NaN ==NaN–>false
  • JS可以通过isNaN()函数来判断一个值是否为NaN
    ===: 全等
  • 用来判断两个值是否相等,不同于==,它不会做隐式类型转化,如果类型不同直接返回false

条件运算符条件表达式?语句1:语句2(三元运算符)

逗号(,)运算符:可以同时声明多个变量并赋值

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript基础语法概念之(数据类型、强制转换、运算符) 的相关文章

  • 使用 jquery 远程图像属性

    目前我正在尝试获取远程图像宽度 高度 我正在开发一个链接共享模块 就像当你在 Facebook 上粘贴链接时 你可以看到标题 描述和图像 所以我尝试使用 php getimagesize 来获取图像宽度 高度 但速度非常慢 所以我正在考虑使
  • Javascript 函数查找数字的倍数

    创建一个名为的函数multiplesOf 它将接受两个参数 第一个参数是数字数组 第二个参数是数字 该函数应返回一个新数组 该数组由参数数组中的每个数字组成 该数字是参数数字的倍数 So multiplesOf 5 6 7 8 9 10 3
  • 在 contenteditable div 中选择范围

    我有一个contenteditablediv 和其中的一些段落 这是我的代码 div style border solid 1px black width 300px height 300px div Hello world div div
  • JavaScript 中的埃拉托斯特尼筛法对大量数据无限运行

    我一直在尝试写埃拉托斯特尼筛法 http en wikipedia org wiki Sieve of EratosthenesJavaScript 中的算法 基本上我只是按照以下步骤操作 创建从 2 到 n 1 的连续整数列表 令第一个素
  • 为什么 iife 在一个简单的例子中不起作用?

    我不明白为什么函数表达式调用不起作用并抛出错误 你能给我解释一下吗 var a function x alert x function a 1 谢谢大家 任务比我想象的要容易得多 这是因为 JS 将 IIFE 解析为函数的参数调用 这样做时
  • Three.js:缩放几何图形后错误的 BoundingBox

    在我的场景中 我有一个简单的立方体 var test new THREE Mesh new THREE CubeGeometry 10 10 10 new THREE MeshBasicMaterial scene add test 该立方
  • IE从哪个版本开始支持Object.create(null)?

    您可以通过多种方式在 JavaScript 中创建对象 creates an object which makes the Object prototype of data var data1 new Object Object liter
  • 如何将内联 JavaScript 与 Express/Node.js 中动态生成的内容分开?

    对于具有几年 Web 开发经验但没有找到答案的人来说 这是一个有点菜鸟的问题程序员堆栈交换 or Google 我决定在这里问一下 我在用Express网络框架Node js 但这个问题并不特定于任何 Web 框架或编程语言 以下是从数据库
  • 图像无法在带有 DOM 的 IE 中加载:控制台中的 7009 错误(无法解码)

    当在 IE 中的单个页面上加载许多图像时 在 IE11 中重现 其中一些图像开始加载失败 并在控制台中出现类似以下警告的内容 DOM7009 无法解码 URL 处的图像 某些唯一的 url 当我查看网络流量时 似乎确实从服务器收到了每个图像
  • 如何针对 Node.js 中发生的每个错误发送电子邮件?

    假设我的 node js 应用程序正在运行 如果出现错误 我的意思是所有错误 不仅仅是网络错误 如果出现错误 则很重要 我如何调用函数向我发送电子邮件 基本上 在我希望它写入 err out 之前 我希望向我发送一封电子邮件 我正在使用no
  • React-Redux:state.setIn() 和 state.set() 有什么区别?

    我见过使用setIn and set 在一些react redux代码中 state setIn state set 我在这里找到了一些文档https facebook github io immutable js https facebo
  • 设置 cookie 时中断 JavaScript 执行

    当设置 cookie 时 是否可以始终中断浏览器开发人员工具中的 javascript 执行 无需显式设置 JS 断点 document cookie 在 html head 块的开头添加此代码片段效果很好
  • 使用 CSS 或 Javascript 填充动画

    我只是想知道是否可以使用 CSS 或 javascript 创建填充动画 基本上我想创建一个填充动画 如下图所示 http i40 tinypic com eit6ia png http i40 tinypic com eit6ia png
  • Javascript 假值(null、未定义、false、空字符串:“”或 '' 和 0)和比较(==)运算符 [重复]

    这个问题在这里已经有答案了 当我使用任何一个值时 null undefined false 0 in a if陈述 它总是被评估为谬误 false 另外 这些值的否定 null undefined false 0 in a if语句总是被评
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • 使用 Vue 的多模式组件

    我在 Vue 中实现动态模式组件时遇到问题 A common approach I follow to display a set of data fetched from the db is I dump each of the rows
  • 如何使用 crypto-js 解密 AES ECB

    我正在尝试将加密数据从 flash 客户端 发送到服务器端的 javascript 在 asp 中作为 jscript 运行 有几个 javascript Aes 库 但它们实际上没有文档记录 我正在尝试使用 crypto js 但无法让代
  • 在 Shopify 商店中嵌入 Vue 组件

    在产品页面中 我尝试显示自定义 Vue 组件 为简洁起见 该组件根据给定的产品 ID 显示 Firebase 数据库中的一些信息 我最初尝试将其制作为 Shopify 应用程序 以便我可以访问他们的 API 我实现了 OAuth 并且可以检
  • Javascript Replace() 和 $1 问题

    我正在尝试创建一个脚本来搜索文本中的模式并在它找到的字符串周围包裹一个标签 shop attributes td each function this html function i html return html replace E 0
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la

随机推荐