一.直面量(字面量)
字面量:英语叫做literal,也叫做直接量. 看见什么,他就是什么
1.数字的字面量
数字的字面量,就是这个数字自己
1.1整数
三种进制
整数可以被表示成十进制(基数为10)、十六进制(基数为16)以及八进制(基数为8)
10进制:十进制整数字组成的数字序列,
8进制:带前导0、0O、0o 的整数字面值表明它是八进制。八进制整数只能包括数字0-7。
16进制:如带前导0x,0X开头的就是十六进制。十六进制整数可以包含(0-9)和字母 a-f 或 A-F
// 八进制 最终显示是以十进制方式显示
alert(015) // 1*8 + 5 = 13
alert(017) // 1*8 + 7 *1 =15
alert(0o21) // 2*8 + 1 *1 =17
alert(0O21); // 2*8 + 1 *1 =17
八进制0-7这八个数字,如果小时不合法,js还自动给你转成10进制,转不了就报错
console.log(088); //88
// 按理说以0开头是八进制,但是后面数字写错了,所以以十进制方式限制
如果以0o或0O开头的八进制将报错
console.log(0o88); // 报语法错误
console.log(0O88); // 报语法错误
1.2 浮点数(小数或指数)
小数的字面量也很简单,就是数学上的点。计算机世界中,小数称为“浮点数”。
浮点数字面值可以有以下的组成部分:
一个十进制整数,它可以带符号(即前面的“+”或“ - ”号),如果整数部分是0可以不写
一个小数点
一个小数部分(由一串十进制数表示),
一个指数部分
console.log(3.14159269);
console.log(5e4); //50000
console.log(5e-4) //0.0005
注意
只有十进制有小数的字面量,八进制、十六进制没有小数的字面量。所以小数没有进制之分
1.3特殊字面量
Infinity 无穷大
Infinity 用于存放表示正无穷大的数值。
-Infinity 用于存放表示负无穷大的数值。
console.log(3e31415926); // Infinity
NaN
英语全名叫做not a number,不是一个数。
console.log(0/0); // NaN
1.4 总结一下
- 数字字面量有整数字面量(十进制,十六进制,八进制)
- 浮点数字面量(记住e)
- 特殊字面量:Infinity ,NaN
2.字符串的字面量
字符串是一个术语,说白了就是我们人说的话。
2.1 字符串字面量的书写方式
字符串的字面量有限定符,就是必须用双引号、单引号包裹起来。字符串被限定在同种引号之间;也就是说,必须是成对单引号或成对双引号。
console.log("今天你好帅哦");
2.2 特殊字符
在字符串中可以使用一些特殊字符,他们有特定的含义
\n New line 换行符
\t Tab tab缩进
但是可以使用字符串中可以使用转义字符,
' 单引号
\” 双引号
\ 反斜杠
二.变量
变量(Variables),和高中数学中的x、y、z很像,它们此时不是字母,而是蕴含值的符号。
什么是变量呢?
就是值可以变化的符号,能够存储JS不同数据类型的值
1.变量声明
使用关键词var
var a; // 声明一个变量a
所谓关键字,就是有特殊功能的小词语。关键字后面一定要有空格隔开.
2.变量命名规则
变量的名字就是标识符(identifiers),任何标识符的命名都需要遵守一定的规则:
JS中标识符的定义规则,可先理解为变量的规则,以后我们还会接触到其他标识符
由字母、下划线(_)、美元($)符号、数字(0-9)组成
但不能以数字开头
也就是说,一个标识符必须由字母、下划线、美元符号开头,后续可以有字母、下划线、美元符号、数字
- 严格区分大小写
所以A和a不是同一个变量
不要使用中文变量名
不能使用关键字和保留字
关键字=>js已经赋予特殊功能的字 保留字=>js预订可能未来要使用的字
关键字:
JS语法中有特殊意义的词
break、else、new、var、 case、 finally 、 return、 void 、 catch 、for 、switch 、 while 、 continue、 function 、this 、 with 、default 、 if 、 throw 、 delete 、 in 、 try 、do 、 instranceof、 typeof
保留字:
JS语法中现在不存在,但是以后会成为关键字的单词(替补关键词)
abstract 、 enum 、int 、 short 、 boolean 、export 、interface、 static、 byte 、extends 、 long 、 super 、 char 、 final 、native 、synchronized 、 class 、float 、 package 、throws 、 const 、goto 、private 、transient 、 debugger 、 implements 、protected 、 volatile 、 double 、import 、public
3.变量的赋值
等号表示赋值,会将等号右边的值,赋给左边的变量.
var a; //定义
a = 200; //赋初值
console.log(a)
运行结果:200
3.1 可以将变量定义和赋值写在一起
var a = 200;
3.2 定义变量为赋值
用var 声明的未赋值的变量,值会被设定为undefined
var a;
console.log(a);
注意:
变量只需要var一次,今后更改变量的值,无需重复var,如果多次定义也不会报错
4.变量声明的提升
JavaScript 变量的另一特别之处是,你可以引用稍后声明的变量,而不会引发异常。这一概念称为变量声明提升.JavaScript 变量感觉上是被“举起”或提升到了所有函数和语句之前。然而提升后的变量将返回 undefined 值,所以即使在使用或引用某个变量之后存在声明和初始化操作,仍将得到 undefined 值。
5.不写var的情况
我们可以直接使用一个变量,直接给它赋值,不写var。系统不会报错,但是这样做,以后你会发现有后遗症:这个变量不是局部变量,而是一个全局变量。
a = 33;
console.log(a);
6.同时定义多个变量
定义多个变量时,中间用逗号隔开
var a = 7 , b = 9 , c = 10;
7.区分变量还是直接量
变量的时候,不能加引号。如果变量加上引号,就变成字符串的直接量了。
var a = 200;
console.log("a"); //a
引号是“字符串”的定界符,所以在双引号里面的a已经失去了变量的意思,就是一个字符串a。
三.数据类型
JavaScript中的值,无论是字面量还是变量,都有明确的类型。
1.概述
1.1基本类型5种
number 数字类型
string 字符串类型
boolean 布尔类型,true和false两个值
undefined undefined类型,只有一个值就是undefined
null null类型 只有一个值null1.2 引用类型
{} 普通对象
[] 数组对象
function 函数对象
2.数据类型的检测
使用typeof
关键字检查数据类型,通常用来检测变量的类型,因为直接量的类型一眼就看的出来
console.log(typeof 123); //number
console.log(typeof "haha"); //string
四.运算符: 加号 +
加法运算符(+)在设计数字和字符串运算的表达式中,JavaScript 会把数字值转换为字符串。
在其它类型数据运算时,JavaScript语言不会把数字变为字符串。
1.转number()
有一些方法可以将内存中表示其他数据类型转换为对应的数字
- number()
1.string "12px" => NaN => 0
2.boolean true => 1 false => 0
3.null null=>0
undefined undefined => NaN
Number('hello world') //NaN
-
parseInt()
paseInt
仅能够返回整数,所以使用它会丢失小数部分
parseInt("250,231") //250
另外,调用 parseInt 时最好总是带上进制(radix) 参数,这个参数用于指定使用哪一种数制
parseInt(17,8); // 15
- parseFloat()
parseFloat
就是将字符串转为浮点数
尽可能的将一个字符串转为浮点数
console.log(parseFloat(123.456.888)); //123.456
也就是说,数字类型都是number,不分整数和浮点数,但是转换的+时候分。
- 正负运算符
console.log(+'88');
正负号转换为数字是内部调用为了Number方法
2.转string
-
+
号运算符
将一个数字,与一个空字符串进行连字符运算,那么就是自动转为字符串了。
var a = 123;
var b = a + "";
console.log(b); //123
console.log(typeof b);//string
3.转boolean
- Boolean() 方法
只有六种情况Boolean(被转换的数据)的结果是false,其余全是true
- 0 数字0
- NaN 数字NaN
- "" 空字符串
- false 布尔值false
- undefined undefined类型
- null null类型
总结:
alert("您好");
prompt("请输入数字","默认值");
console.log("您好");
Number(“33”)
parseInt("250",8);
parseFloat("250.666");
Boolean("")