JavaScript基本类型
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返回字符串的字串,参数为起始、终止位置,含左不含右,没有终止位置则到字串末尾