JavaScript基础(一)

JavaScript基础(一)

一、JavaScript的数据类型

1、JavaScript是一种弱类型语言,不用提前声明变量的数据类型。在程序运行过程中,变量的数据类型会被自动确定
2、数据类型分类:基本数据类型和复杂数据类型(也称为引用数据类型)。
在这里插入图片描述
(1)、数字型:JavaScript中的数字型可以用来保存整数或浮点数(小数)

var age = 18;   // 整数
var pi = 3.14;    // 浮点数(小数)

①常见的进制
八进制数:在数字开头加上0,八进制数由0~7组成,逢8进位
十进制数:是组成以10为基础的数字系统,有0~9组成,逢10进位
十六进制数:在数字开头加上0x,十六进制数由0-9,a-f组成

在进行进制转换时,可将其先转为二进制,再进行转换
②范围:数字型的最大值和最小值
最大值:Number.MAX_VALUE,输出结果:1.7976931348623157e+308
最小值:Number.MIN_VALUE,输出结果:5e-324
③数字型的3个特殊值:Infinity和- Infinity 和NaN

  Infinity(无穷大) :如Number.MAX_VALUE*2
  Infinity(无穷小) :如-Number.MAX_VALUE*2
  NaN(非数值): 如'abc' – 100
  isNaN:用来判断一个变量是否为非数字的类型,返回值为true表示非数字,
                 false表示是数字(使用较为频繁)

(2)、字符串型
字符串是指计算机中用于表示文本的一系列字符,在JavaScript中使用单引号或双引号来包裹字符串。

var str1 = '单引号字符串';
var str2 = "双引号字符串";

①单、双引号嵌套
在单引号字符串中可以直接书写双引号
在双引号字符串中也可以直接书写单引号

正确示例

var str1 = 'I am a "programmer"';	// I am a "programmer"
var str2 = "I'm a 'programmer'";	// I'm a 'programmer'

错误示例

var str1 = 'I'm a programmer';	// 单引号错误用法
var str2 = "I'm a "programmer"";	// 双引号错误用法
var str3 = 'I am a programmer";	// 单双引号混用

②转义符:在字符串中使用换行、Tab等特殊符号时,可以用转义符来进行转义,转义符以“\”开始。常见转义符见下表。
在这里插入图片描述
③字符串长度:字符串是由若干字符组成的,这些字符的数量就是字符串的长度。通过字符串的length属性可以获取整个字符串的长度。
④访问字符串中的字符:字符串可以使用“[index]”语法按照index(索引)访问字符,index从0开始,一直到字符串的长度减1,如果超过了index最大值,会返回undefined。

示例代码

var str = 'I\'m a programmer';
console.log(str[0]);     // 输出结果:I
console.log(str[1]);     // 输出结果:'
console.log(str[15]);   // 输出结果:r
console.log(str[16]);   // 输出结果:undefined

⑤字符串拼接:多个字符串之间可以使用“+”进行拼接,如果数据类型不同,拼接前会把其他类型转成字符串,再拼接成一个新的字符串。
示例代码

var str = 'I\'m a programmer';
console.log('a' + 'b');      // ab
console.log('a' + 18);      // a18
console.log('_' + true);   // _true
console.log('12' + 14);   // 1214
console.log(12 + 14);     // 两个数字相加,结果为26

⑥显示年龄的案例:弹出一个输入框,让用户输入年龄。输入后,单击“确定”按钮,程序弹出来一个警告框,显示内容为“您今年x岁了”,x表示刚才输入的年龄。

var age = prompt('请输入您的年龄'); // 弹出一个输入框,让用户输入年龄
var msg = '您今年' + age + '岁了'; // 将年龄与输出的字符串拼接
alert(msg);                      // 弹出警告框,输出程序的处理结果

(3)、布尔型
布尔型通常用于逻辑判断,它有两个值:true和false,表示事物的“真”和“假”

console.log(true);		// 输出结果:true
console.log(false);	// 输出结果:false
console.log(true + 1);	// 输出结果:2
console.log(false + 1);	// 输出结果:1

(4)、undefined和null

// 演示null的使用
var b = null;
console.log(b + '_');	// 输出结果:null_(字符串型)
console.log(b + 1);             // 输出结果:1(b转换为0)
console.log(b + true);        // 输出结果:1(b转换为0,true转换为1)

(5)、数据类型检测:可以利用typeof运算符进行数据类型检测

console.log(typeof 12);	            // 输出结果:number
console.log(typeof null);	            // 输出结果:object
var a = '12';
console.log(typeof a == 'string');  // 输出结果:true

字面量,简单来说,就是用字面量来表示如何在代码中表达这个值,通过字面量,我们可以很容易地看出来它是哪种类型的值。例如数字字面量:7、8;布尔字面量:true、false等。

二、数据类型转换

(1)、转换为字符串型

  • 利用“+”拼接字符串(最常用的一种方式)

  • 利用toString()转换成字符串

  • 利用String()转换成字符串

    注意:null和undefined无法使用toSting()方式进行转换;对于数字型的变量,可以在toString()的小括号中传入参数,来进行进制转换。

(2)、转换为数字型

  • 使用parseInt()将字符串转为整数

  • 使用parseFloat()将字符串转为浮点数

  • 使用Number()将字符串转为数字型

  • 利用算术运算符(-、*、/)隐式转换

示例

var year = prompt('请输入您的年龄');
var age = 2020 - parseInt(year); 
alert('您今年已经' + age + '岁了');
var num1 = prompt('请输入第一个数:');
var num2 = prompt('请输入第二个数:');
var result = parseFloat(num1) + parseFloat(num2);
alert('计算结果是:' + result);

(3)、转换为布尔型:使用Boolean(),代表空、否定的值会被转换为false,如空字符串、0、NaN、null和undefined,其余的值转换为true

示例

console.log(Boolean(''));	              // false
console.log(Boolean(0));	              // false
console.log(Boolean(NaN));            // false
console.log(Boolean(null));              // false
console.log(Boolean(undefined));   // false
console.log(Boolean('小白'));	// true
console.log(Boolean(12));		// true

三、运算符

1、算术运算符:用于对两个变量或值进行算术运算,与数学上的加、减、乘、除类似,常用的算术运算符如下
在这里插入图片描述
算术运算符的注意事项:

  • 进行四则混合运算时,运算顺序要遵循数学中“先乘除后加减”的原则

  • 在进行取模运算时,运算结果的正负取决于被模数(%左边的数)的符号,与模数(%右边的数)的符号无关

  • 在开发中尽量避免利用浮点数进行运算,因为有可能会因JavaScript的精度导致结果的偏差

  • 使用“+”和“-”可以表示正数或负数

注:表达式是各种类型的数据、变量和运算符的集合,最简单的表达式可以是一个变量或字面量。表达式最终都会有一个返回值。

2、递增递减运算符:使用递增(++)、递减(–)运算符可以快速地对变量的值进行递增和递减操作,它属于一元运算符,只对一个表达式进行操作

  • 前置递增(递减)运算符:递增和递减运算符写在变量前面,返回的是计算后的结果
  • 后置递增(递减)运算符:递增和递减运算符写在变量后面,返回的是计算前的结果
  • 递增和递减运算符的优先级高于“+”“-”等运算符

3、比较运算符:用于对两个数据进行比较,其结果是一个布尔值,即true或false ,常用的比较运算符及用法见下表

在这里插入图片描述
4、逻辑运算符:用于对布尔值进行运算,其返回值也是布尔值。在实际开发中,逻辑运算符经常用于多个条件的判断,常用的逻辑运算符见下表

在这里插入图片描述
注:位运算符,用来对数据进行二进制运算,将参与运算的操作数视为由二进制(0和1)组成的32位的串

5、赋值运算符:用于将运算符右边的值赋给左边的变量,常用的逻辑运算符及示例如下

console.log(Boolean('')) // false
var age = 10;
age += 5;	  // 相当于age = age + 5;
console.log(age);	  // 输出结果:15
age -= 5;	  // 相当于age = age - 5;
console.log(age);	  // 输出结果:10
age *= 10;	  // 相当于age = age * 10;
console.log(age);	  // 输出结果:100

常用的逻辑运算符如下

在这里插入图片描述
6、三元运算符:是一种需要三个操作数的运算符,运算的结果根据给定条件决定

条件表达式 ? 表达式1 : 表达式2

语法说明:先求条件表达式的值,如果为true,则返回表达式1的执行结果;如果条件表达式的值为false,则返回表达式2的执行结果

7、运算符的优先级:是指表达式中所有运算符参与运算的先后顺序

在这里插入图片描述
注:1、逻辑运算符中的短路问题

  (1)&&的短路:当第一个表达式为false时,不运算第二个表达式
  (2)||的短路:当第一个表达式为true时,不运算第二个表达式

2、++和–的应用:前缀表达式和后缀表达式的区别

  (1)前缀和后缀作为独立语句出现时没有区别
  (2)前缀和后缀在表达式中的区别:
     A、后缀:先使用变量的值,然后让变量加1
	 B、前缀:先让变量加1,然后再使用变量

3、JavaScript中=和=以及!=、!==的区别与联系

    在JavaScript中,“=”代表赋值操作;“==”先转换类型再比较,“===”先判断类型,如果不是同一类型直接为false。其中“==”和“===”都可以用在布尔表达式中,但两者有很大的区别,下面对三者进行具体介绍:
    一、“=”代表赋值,即将右边的值赋值到左边。
例子:表达式① x=“55”,表示将字符串类型的55赋值给变量x,即变量x也为字符串类型。
表达式② x=55,表示将数值类型的55赋值给变量x,即:变量x也为数值类型
二、 “==”表示先转换类型(自动)再比较。如果两个值相等,肯定相等,如果两个值不等,也可能是相等的,按一下情况进行判断:
1、如果一个是null、一个是undefined,那么相等。
2、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
3、如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。
4、如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。
注意:对象转换成基础类型,利用它的toString或者valueOf方法。js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象。
例子:表达式"1" == true;返回结果为true。
解析:true转成1,再把“1”转成1,进行比较。(“==”会在两个值数据类型不同时,自动转化为同类型进行值比较)
三、 “===”先判断数据类型,(类型不同时,不会自动转换类型)如果不是同一类型直接为false。如果类型相同,再判断其值,如果值也相同则返回true,否则返回false。===表示的是绝对的相等。
1、如果被比较的两个值数据类型不相等则不等。
2、如果被比较的两个值都是数值,并且是同一个值,判定相等。
3、如果被比较的两个值都是字符串,每个位置的字符都一样,那么相等;否则不相等。
4、如果被比较的两个值都是布尔类型的true,或者都是false,那么相等。
5、如果被比较的两个值都引用同一个对象或函数,那么相等;否则不相等。
6、如果两个值都是null,或者都是undefined,那么相等。
例子:假设给定 x=5;
表达式①  x===5 返回结果为 true;
表达式②  x==="5" 返回结果为 false。
解析:针对给定表达式x=5知,将数值5赋值给变量x,即:变量x为数值类型变量。因此,对于表达式①,等号两端数据类型均为数值类型,类型相同,再比较数值,均为5,因此值与类型均相同,所以返回结果为true。而对于表达式②来说,等号坐标变量x数据类型为数值型,等号右端变量数据类型为字符串类型,二者数据类型不相同,由于“===”表达式不能实现自动转换数据类型,因此返回数据结果为false。
四、!=是“==”的逆反,在不等式两端数据类型不同时,自动转化成相同的数据类型,在进行值比较,如果值相同则返回结果为false,否则为true。
例子:表达式"1" != true;返回结果为false。
 解析:对于表达式“!=”,两百年数据类型不相同,会自动将布尔型true转成数值型1,再把字符型“1”转成数值型1,在进行比较,值相同,因此表达式不成立,即返回结果为false。
五、!==是“===”的逆反,当不等式两端的数据类型不相同时,不会自动将两端的数据类型转换成同一数据类型,而是返回结果直接为true,如果数据类型相同,继续比较其值,如果值也相同,则返回false,否则返回true。
例子:假设给定 x=5;
表达式①  x!==5  返回结果为false;
表达式②  x!=="5" 返回结果为 true;
解析:针对给定表达式x=5知,将数值5赋值给变量x,即:变量x为数值类型变量。因此,对于表达式①,等号两端数据类型均为数值类型,类型相同,再比较数值,均为5,因此值与类型均相同,所以返回结果为false。而对于表达式②来说,等号坐标变量x数据类型为数值型,等号右端变量数据类型为字符串类型,二者数据类型不相同,由于“!==”表达式不能实现自动转换数据类型,因此返回数据结果为true。
  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值