第三章 JavaScript基本概念

2.1 <script>元素

  1. 该元素是双标签, 在HTML中不能省略结束标签
  2. 如果使用src引入外部js文件, 则标签内的js代码会被忽略

3.4 数据类型

3.4.2 undefined类型

  • 使用var声明变量但未初始化时, 这个变量的值是undefined
    这与尚未定义的变量不同
var a;
// undefined
console.log(a);
// Uncaught ReferenceError: b is not defined 报错
console.log(b)
  • 可以使用typeof检测未定义的变量, 他将返回undefined
var a;
// undefined
console.log(typeof(a));
// undefined
console.log(typeof(b));

3.4.3 null 类型

  • null 表示空对象指针
// object
console.log(typeof(null));
  • undefined的值派生自null, 所以ECMAScript规范规定他们相等
// true
console.log(undefined == null);

3.4.4 Boolean类型

可以对任何数据类型的值调用转型函数Boolean(),而且总会返回一个Boolean
在这里插入图片描述
在这里插入图片描述

  • 转型函数Boolean()会在if语句中对非数值隐式调用

3.4.5 Number类型

数值字面量, 一般为十进制, 但也有八进制和十六进制

  • 八进制
    0开头是八进制, 后面必须是0-7, 超过7的前导0被忽略, 并当做10进制数处理
// 57
console.log(071);
// 79
console.log(079);
  • 16进制
    0x开头, 后跟0-9,A-F. 字符可大写也可以小写
// 31
console.log(0x1F);

注意: 在进行算数运算时, 结果都会转为十进制数

// 31 + 57 = 88
console.log(0x1F + 071);

1. 浮点数值

浮点数所占内存是整数的两倍, 所以ECMAScript会适当的将浮点数转为整数

// 1
console.log(1.)
// 10
console.log(10.0)

2. 数值范围

  • 最小数值 & 最大数值
// 5e-324
console.log(Number.MIN_VALUE);
// 1.7976931348623157e+308
console.log(Number.MAX_VALUE);
  • Infinity & -Infinity
// number
typeof Infinity
// -Infinity
console.log(-1.7976931348623157e+309);
// Infinity 超出最大值
console.log(1.7976931348623157e+309);
  • isFinity() 判断数值是否在最小值与最大值之间
// true
console.log(isFinite(1))

3. NaN

// number
console.log(typeof(NaN))

表示本来要返回数值的情况结果未返回数值, 避免报错. 其他语言中, 任何数值除以非数值会导致错误, 导致程序停止运行. 在ECMAScript中, 任何数值除以非数值返回NaN, 不影响其他代码运行.

  • NaN的特点
    • 任何涉及NaN的操作都会返回NaN: NaN/10
    • NaN与任何值都不相等, 包括NaN本身
  • isNaN() 判断参数是否不是数值
    对非数值尝试将转为数值
// true
console.log(isNaN(NaN))
// true
console.log(isNaN(" 0"))
// false true可以转为1
console.log(isNaN(true))

注意: isNaN()也适用于对象, 先调对象的valueOf(), 将返回值转为数值, 不成功, 再调用对象toString()方法, 再测返回值.

4. 数值转换

  • Number 可以用于任何数值
    在这里插入图片描述
  • parseInt() 用于字符串
  1. 忽略字符串前的空格
  2. 如果第一个字符不是数字字符或者负号,parseInt()就会返回 NaN;也就是说,用 parseInt()转换空字符串会返回 NaNNumber()对空字符返回 0)。如果第一个字符是数字字符,parseInt()会继续解析第二个字符,直到解析完所有后续字符或者遇到了一个非数字字符。例如,"1234blue"会被转换为 1234, 为"blue"会被完全忽略。类似地,"22.5"会被转换为 22,因为小数点并不是有效的数字字符。
  3. 对于不同进制的字面量可以传入第二个参数
var num1 = parseInt("10", 2); //2 (按二进制解析)
var num2 = parseInt("10", 8); //8 (按八进制解析)
var num3 = parseInt("10", 10); //10 (按十进制解析)
var num4 = parseInt("10", 16); //16 (按十六进制解析)
  • parsFloat() 用于字符串
  1. 第一个小数点有效
  2. 16进制字符串转为0
  3. 只解析10进制数, 没有第二个参数指定基数
var num1 = parseFloat("1234blue"); //1234 (整数)
var num2 = parseFloat("0xA"); //0 
var num3 = parseFloat("22.5"); //22.5 
var num4 = parseFloat("22.34.5"); //22.34 
var num5 = parseFloat("0908.5"); //908.5 

4.5.6 string类型

单引号和双引号完全相同

1. 字符字面量

在这里插入图片描述

2. 字符串的特性

字符串不可变

3. 转换字符串

  • toString()
  1. 数值, 布尔值, 对象和字符串可以直接调用toString(), null和undefined没有这个方法.
  2. 方法通常没有参数, 对于数值可以指定参数, 进制基数
var num = 10; 
alert(num.toString()); // "10" 
alert(num.toString(2)); // "1010" 
alert(num.toString(8)); // "12" 
alert(num.toString(10)); // "10" 
alert(num.toString(16)); // "a" 
  • 转型函数:String()
    在这里插入图片描述

3.4.7Object类型

共有的属性和方法
在这里插入图片描述

3.5 操作符

3.5.1 一元操作符

1. 递增递减操作符

如图

2. 一元加减操作符 (+/-)

  • 对于数值就是正负.
  • 在对非数值应用一元加操作符时,该操作符会像 Number()转型函数一样对这个值执行转换。换句话说,布尔值falsetrue将被转换为 0 和 1,字符串值会被按照一组特殊的规则进行解析,而对象是先调用它们的 valueOf()和(或)toString()方法,再转换得到的值。

3.5.2 位操作符

ECMAScript 中的所有数值都以 IEEE-754 64 位格式存储,但位操作符并不直接操作 64 位的值。而是先将 64 位的值转换成 32 位的整数,然后执行操作,最后再将结果转换回 64 位。对于开发人员来说,由于 64 位存储格式是透明的,因此整个过程就像是只存在 32 位的整数一样。

  • 正数以纯二进制格式存储
  • 负数同样以二进制码存储,但使用的格式是二进制补码。计算一个数值的二进制补码,需要经过下列 3 个步骤:
    - 如图
  • 在 ECMAScript 中,当对数值应用位操作符时,在对特殊的 NaNInfinity值应用位操作时,这两个值都会被当成 0 来处理。如果对非数值应用位操作符,会先使用Number()函数将该值转换为一个数值(自动完成),然后再应用位操作。得到的结果将是一个数值。

1. 按位非(NOT)

  • 按位非操作符由一个波浪线(~)表示,执行按位非的结果就是返回数值的反码。
var num1 = 25; // 二进制 00000000000000000000000000011001 
var num2 = ~num1; // 二进制 11111111111111111111111111100110 
alert(num2); // -26 

这里,对 25 执行按位非操作,结果得到了-26。这也验证了按位非操作的本质:操作数的负值减 1。
2. 按位与(AND)
3. 按位或(OR)
4. 按位异或(XOR)
5. 左移(<<)
6. 有符号的右移(>>)
7. 无符号右移(>>>)

3.5.3 布尔操作符

1. 逻辑非

- 如图

2. 逻辑与

- 如图

3. 逻辑或

-如图

我们可以利用逻辑或的这一行为来避免为变量赋 null 或 undefined 值。例如:
var myObject = preferredObject || backupObject;
在这个例子中,变量 myObject 将被赋予等号后面两个值中的一个。变量 preferredObject 中包含优先赋给变量 myObject 的值,变量 backupObject 负责在 preferredObject 中不包含有效值的情况下提供后备值。如果 preferredObject 的值不是 null,那么它的值将被赋给 myObject;如果是 null,则将 backupObject 的值赋给 myObject。ECMAScript 程序的赋值语句经常会使用这种模式。

3.5.4 乘性操作符

1. 乘法

在这里插入图片描述

2. 除法

在这里插入图片描述
如果有一个操作数不是数值,则在后台调用 Number()将其转换为数值,然后再应用上面的规则。

3. 求模

在这里插入图片描述

4. 加法

在这里插入图片描述

5. 减法

在这里插入图片描述
在这里插入图片描述

3.5.10 逗号操作符

逗号操作符有一种特殊用法: 可以用来赋值, 他会返回表达式中的最后一项

var num = (1,2,3,4);
// 4
console.log(num)

3.6 语句

3.6.4 for语句

for 语句中的初始化表达式、控制表达式和循环后表达式都是可选的。将这三个表达式全部省略,就会创建一个无限循环,例如:

// 无限循环
for (;;) { 
 doSomething(); 
} 

而只给出控制表达式实际上就把 for 循环转换成了 while 循环,例如:

var count = 10; 
var i = 0; 
for (; i < count; ){ 
 alert(i); 
 i++; 
} 

3.6.4 for-in语句

枚举对象的属性

3.6.8 with语句

with语句的作用是将代码的作用域设置到一个特定的对象中.with 语句的作用是将代码的作用域设置到一个特定的对象中。with 语句的语法如下:
with (expression) statement;
定义 with 语句的目的主要是为了简化多次编写同一个对象的工作,如下面的例子所示:

var qs = location.search.substring(1); 
var hostName = location.hostname; 
var url = location.href; 

上面几行代码都包含 location 对象。如果使用 with 语句,可以把上面的代码改写成如下所示:

with(location){ 
 var qs = search.substring(1); 
 var hostName = hostname; 
 var url = href; 
} 

3.6.9 switch语句

虽然 ECMAScript 中的 switch语句借鉴自其他语言,但这个语句也有自己的特色。首先,可以在switch 语句中使用任何数据类型(在很多其他语言中只能使用数值),无论是字符串,还是对象都没有问题。其次,每个case的值不一定是常量,可以是变量,甚至是表达式。请看下面这个例子:

switch ("hello world") { 
 case "hello" + " world": 
 alert("Greeting was found."); 
 break; 
 case "goodbye": 
 alert("Closing was found."); 
 break; 
 default: 
 alert("Unexpected message was found."); 
} 

在这个例子中,switch 语句使用的就是字符串。其中,第一种情形实际上是一个对字符串拼接操
作求值的表达式。由于这个字符串拼接表达式的结果与 switch 的参数相等,因此结果就会显示
“Greeting was found.”。而且,使用表达式作为 case 值还可以实现下列操作:

var num = 25; 
switch (true) { 
 case num < 0: 
 alert("Less than 0."); 
 break; 
 case num >= 0 && num <= 10: 
 alert("Between 0 and 10."); 
 break; 
 case num > 10 && num <= 20: 
 alert("Between 10 and 20."); 
 break; 
 default: 
 alert("More than 20."); 
} 

这个例子首先在 switch 语句外面声明了变量 num。而之所以给 switch 语句传递表达式 true,是因为每个 case 值都可以返回一个布尔值。这样,每个 case 按照顺序被求值,直到找到匹配的值或者遇到 default 语句为止(这正是这个例子的最终结果)。

3.7 函数

函数以return结尾则返回值为undefined

function test(){
	return;
}
// undefined
console.log(test())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
疫情居家办公系统管理系统按照操作主体分为管理员和用户。管理员的功能包括办公设备管理、部门信息管理、字典管理、公告信息管理、请假信息管理、签到信息管理、留言管理、外出报备管理、薪资管理、用户管理、公司资料管理、管理员管理。用户的功能等。该系统采用了MySQL数据库,Java语言,Spring Boot框架等技术进行编程实现。 疫情居家办公系统管理系统可以提高疫情居家办公系统信息管理问题的解决效率,优化疫情居家办公系统信息处理流程,保证疫情居家办公系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理疫情居家办公系统信息,包括外出报备管理,培训管理,签到管理,薪资管理等,可以管理公告。 外出报备管理界面,管理员在外出报备管理界面中可以对界面中显示,可以对外出报备信息的外出报备状态进行查看,可以添加新的外出报备信息等。签到管理界面,管理员在签到管理界面中查看签到种类信息,签到描述信息,新增签到信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值