JavaScript基本类型

本文深入探讨JavaScript的基础知识,包括变量的定义(隐式与显式)、类型转换、数据类型(如Number、Boolean、String、Date等)、变量作用域以及常用的类型检查和操作方法。此外,还介绍了正则表达式、字符串操作和日期处理,以及如何在JavaScript中显示和调试数据。
摘要由CSDN通过智能技术生成

javaScript语句

  • js 对大小写敏感,变量、函数名、运算符以及其他一切东西都是区分大小写的
  • js 语句之间使用分号来分隔,通常换行也可以用来分隔,但是可以使用反斜杠\来对 语句折行。因此为了避免可能出现的错误,最好使用分号来结束一条语句
  • js会忽略多余的空格。您可以向脚本添加空格,来提高其可读性

定义变量

Js是一种弱类型脚本语言,定义变量时不需要声明类型,而且类型允许在运行过程中不断变化。 但是一样支持变量声明,变量一样存在作用范围,有局部变量和全局变量之分

1、隐式定义:直接给变量赋值。例如a=123
2、显式定义:使用var或者let关键字定义。例如var kk=123;
typeof()函数用于获取变量的类型
变量名称区分大小写的

变量的命名规则

1、不能是系统关键字和保留字
2、第一个字符必须是字母、下划线_或美元符号$,余下的字符可以是下划线、 美元符号或任何字母或数字字符

类型转换

js支持自动类型转换

类型相关的操作

获取数据类型typeof(a)
强制类型转换函数

  • toString()将其它类型转换为字符串
  • parseInt()将字串、布尔值等转换为整数
  • parseFloat()将字串、布尔值等转换为浮点数

数值转换时js会尽最大努力进行转换,对于包含其它字符的字串转换为NaN
例如:'12d’会转换为12,而’d12’则是NaN
undefined、null、布尔值及其它对象一律转换为NaN

变量范围

  • 直接定义的变量是全局变量,全局变量可以被所有的脚本访问
  • 在函数中定义的变量称为局部变量,只能在函数内部有效
  • 如果全局变量和局部变量名称相同,则局部覆盖全局
  • js中没有块范围,在函数内部定义的变量则返回是函数体范围

在函数内容是否使用var定义变量的区别

  • 如果使用var定义变量,则系统会强制定义一个新变量,有效范围是函数内部
  • 如果没有使用var定义变量,系统会优先在当前上下文中搜索是否存在这个变量, 如果存在则直接使用;如果不存在才会重新定义一个新变量

基本数据类型

js是弱类型脚本语言,变量的数据类型是解释时动态决定的, 但是事实上js值保存在内存中时也是有数据类型的

js数据类型

  • 数值类型,包括整数或浮点数, number
  • 布尔类型,只有true或false两个值,boolean
  • 字符串类型,可用单双引号括起来的字符序列,string
  • undefined类型,专门用于确定一个已经创建但是没有初始值的变量
  • null类型,用于表示某个变量的值为空,object

typeof运算符可以获取变量的数据类型

JS类型可以分为两大类:

  • 原始类型(基本类型):按值访问,可以操作保存在变量中实际的值。 原始类型汇总中null和undefined比较特殊
  • 引用类型:引用类型的值是保存在内存中的对象

与其他语言不同的是,JavaScript不允许直接访问内存中的位置,也就是说不能 直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用而不是实际 的对象。所以引用类型的值是按引用访问的

特殊数据类型

undefined类型值只有一个undefined,用于表示某个值不存在或者没有分配值
null用于表示变量的值为空
null和undefined

  • undefined表示没有为变量设置值或者属性 (例如String.xyz)不存在;null表示变量是有值的,只是其值为空
  • nullundefined为true,如果需要严格区分null和undefined则可以使用精确比较=
  • null是保留字,而undefined是一个全局变量

布尔类型

布尔类型只有true和false两个值,一般是逻辑计算的结果或用于标识对象的某种状态值。

日期类型

Date日期对象。这个对象可以储存任意一个日期,从0001年到9999年,并且可以精确到毫秒数(1/1000秒) 在内部,日期对象是一个整数,它是从1970年1月1日零时正开始计算到日期对象所指的日期的毫秒数。如果 所指日期比1970年早,则它是一个负数 所有日期时间,如果不指定时区,都采用UTC世界时时区,它与GMT格林威治时间在数值基本上是一样的

使用日期类型

  • 不指定参数日期 new Date() - 参数为日期字符串: var nowd2=new Date(“2019/3/20 11:12”); - 参数为毫秒数: var nowd3=new Date(5000); - 参数为年月日小时分钟秒毫秒: var nowd4=new Date(2018,10,24,11,12,0,300);

  • 常见方法: - getFullYear() 返回四位数的年、 getMonth() 返回月 0-11、 getDate() 返回日、 getDay() 返回星期

  • getHours() 返回小时 0-23、 getMinutes() 返回分钟 0-59 、getSeconds() 返回秒数 0-59

  • getMilliseconds() 返回0-999 毫秒

  • getTime() 返回1970 年 1 月 1 日至今的毫秒数 - setFullYear(year,month,day) 、 setMonth(month,day) 、setDate(day)、

  • setHours(hour,min,sec,millisec)、setMinutes(min,sec,millisec)、 setSeconds(sec,millisec) - setMilliseconds(millisec) - setTime(millisec)

数据显示

使用 window.alert() 弹出警告框

可以用于简单的代码调试,用于判断输出结果是否和预计的结果一致

使用 document.write() 方法将内容写到 HTML 文档中

基本不使用

使用 innerHTML 写入到 HTML 元素

一般用于控制在页面指定位置输出数据,例如提示早上好、晚上好之类的信息

使用 console.log() 写入到浏览器的控制台

这种方式常用于编程测试中,输出结果比较详细

数值型

  • js中所有的数值都采用IEEE754-1985双精度浮点数的格式存放,支 持科学计数法(注意E不区分大小写)
  • 所有数字都采用64位浮点格式存储,相当于Java和C语言中的double格式
  • 整数(不使用小数点或指数计数法)最多精确为17位
  • 小数的最大位数是18,但是浮点运算并不总是100%准确

针对整数js还有十进制、八进制(0开头,注意不是所有浏览器都支持)和 十六进制(0x开头)写法
当数值超出其表示范围会出现两个特殊值Infinity正无穷大和-Infinity负无穷大

  • 注意Infinity和-Infinity和其它数值进行计算时,计算结果为NaN
  • 比较时Infinity总是相等的,而-Infinity也总是相等的
    li>
  • 直接引用的方法为Number.POSITIVE_INFINITY和Number.NEGATIVE_INFINITY, 最大值和最小值是Number.MAX_VALUE和Number.MIN_VALUE,NaN是Number.NaN
  • js计算中允许除数为0,计算结果为Infinity,如果除数和被除数都是0则为NaN
  • 注意NaN不会与任何数据相等,即使两个NaN比较也是false,判断是否为NaN则使用函数isNaN()
  • 浮点数不能精确存放,所以推荐针对浮点数使用差值比较法判定相等

正则表达式

正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的 语言来给字符串定义一个规则,凡是符合规则的字符串就认为它匹配了,否则该字符串就是不合法的

g全文查找、i忽略大小写、m 多行查找。也可以同时指定3个模式 首先構建正則式對象 new RegExp(); 、new RegExp(“a”);、new RegExp(“a”,“i”); 相当于/a/i 常見方法: - compile 编译正则表达式 - test 检索,返回 true 或 false - exec检索字符串中指定的值。返回找到的值,并确定其位置 正则表达式本质是一种用于进行字符匹配比较的特殊字符串,任意一个普通 字符都可以作为正则表达式,只是这个表达式中没有使用通配符则只能匹配一个字 符串。例如/abc/只能匹配字符串“abc”

js提供了一个test()方法用于判断正则式是否匹配某个字符串,经常用于客户端录入数据的有效性判断

通配符

  • .可以匹配任何字符
  • \d 数字digit,匹配0-9的所有数字
  • \D匹配任何非数字
  • \s 空白space,匹配所有的空白字符,包括空格、制表符、回车符、换页符、换行符等
  • \S匹配所有的非空白字符
  • \w 单词word,匹配所有的单词字符,包括0-9的所有数字、26个英文字母和下划线_
  • \W匹配所有的非单词字符
    []表示法,这种表示方法是最灵活的,例如[a-z]表示a-z之间的一个任意字符, 例如[a-z0-9] 表示a-z或0-9的任意一个字符, [\u4e00-\u9fff] 匹配任意一个汉字, 这里使用的是unicode编码字符集中的码值范围进行判定
  • $匹配任意一行的结尾
  • ^匹配任意一行的开头

特殊字符表示频率修饰

  • ?指定前面的表达式可以出现零次或一次
  • *指定前面的表达式可以出现零次或多次
  • +指定前面的表达式可以出现一次或多次
  • {m, n}表示法,这种写法最灵活,用于表示前面的表达式可以最少出现m次, 最多出现n次。注意其中的m和n都可以省略,省略m表示0,省略n表示无限次
    • a{3}表示a必須出現3次,可以匹配aaa
    • a{3,}表示最少出現3次,可以匹配aaa、aaaa、aaaaa等
    • a{0,3}表示最多出現3次,可以匹配aaaaa中的前3個a
      正则式中还允许使用()表示固定组,例如/((abc)|(efg))/ 表示可以匹配abc或者cfg

字符串类型

js以String内建类表示字符串

字符串中的特殊字符需要以反斜杠后跟一个普通的字符来表示,反斜杠就成为了一个转意字符

JavaScript中的特殊字符主要有:\n表示换行、\t表示退格、\’表示单引号、\”是双引号、 \表示一个斜杠\

常用方法

js中的字串类型可以使用单双引号都可以,比较时使用==即可,不用equals()方法

  • charAt获取字串特定索引位置的字符
  • length属性获取字符串长度,中文也是一个字符长
  • indexOf查找字串中特定字串第一次出现的位置,可以引入参数2指定起始查找位置,查找不到返回-1
  • lastIndexOf从后向前找第一次出现的位置
  • substring返回字符串的字串,参数为起始、终止位置,含左不含右,没有终止位置则到字串末尾
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值