JavaScript——(1)

一、JS语法与变量

1. 初始JavaScript

1.1 前端三层

语言功能
结构层HTML搭建结构、放置部件、描述语义
样式层CSS美化网页、实现布局
行为层JavaScript实现交互效果、数据收发、表单验证等

1.2 JavaScript 体系

  • 语言核心

    • ES5(现阶段学习目标)

    • ES6(后期学习目标)、ES7、ES8、ES9、……

  • DOM(操纵 HTML)

  • BOM(操作 浏览器)

1.3 JavaScript 的语言风格和特性

  • 类 C 语言风格,容易上手

  • 弱类型(动态类型),简单易学

  • 丰富的功能,无敌的生态,强大的性能

弱类型既是 JS 的优点,也是 JS 的缺点!在 JS 诞生之初,JS 只是一个控制浏览器网页的小型脚本语言,所以最初设计 JS 时去掉了类型系统,因为类型系统需要涉及到复杂的语法校验和编译过程,得不偿失。后来随着前端的不断发展,JS 所开发的项目越来越复杂,JS 弱类型的特性反而变成了 JS 的劣势!所以最近几年微软出品的 TypeScript 越来越火,TS 就是一个 JS 的超集,在 JS 的基础上提供了类型系统的一门全新的语言,并且 TS 代码可以编译为纯 JS 代码运行到 JS 能运行的任何地方!所以 TypeScript 未来一定是前端开发的趋势……,我们在掌握好 JS 后,最好去学习一下 TS!

2. JS的书写位置

  • <body> 中的 <script> 标签中书写 JS 代码

  • 将 JS 代码单独保存为 .js 文件,然后在 HTML 文件中使用 <script src=""></script> 引入

可以用";"断句,也可以不用。

2.1 在 <body> 中书写 JS 代码

<body> 中的 <script> 标签中书写 JS 代码

  • index.html

<!DOCTYPE html>
<html lang="en">
​
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
​
<body>
    <!-- 在 HTML5 之前,必须要加上 type 属性,并且里面的内容一定要正确!-->
    <!-- 
    <script type="text/javascript">
    </script> 
    -->
​
    <!-- 目前都是使用 HTML5,所以不用写 type 属性,默认就是 JS -->
    <!-- 推荐把 <script> 写到 body 的末尾(避免 JS 发生阻塞时页面受到牵连)-->
    <script>
        // 弹窗输出一句话
        // 每一句 JS 代码以分号结尾!
        alert('你好,JavaScript!');
    </script>
</body>
​
</html>

2.2 将 JS 代码单独保存为 .js 文件

将 JS 代码单独保存为 .js 文件,然后在 HTML 文件中使用 <script src=""></script> 引入

  • 文件结构

  • index.html

<!DOCTYPE html>
<html lang="en">
​
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!--
    <script src="./js/index.js"></script>
    -->
</head>
​
<body>
    <!-- 也可以放在 body 末尾(推荐)-->
    <script src="./js/index.js"></script>
</body>
​
</html>
  • index.js

alert('你好,JavaScript!');

以上两种 JS 的书写方法,对于复杂的 js 代码,强烈推荐第二种!

3. 认识输出语句和输入语句

  • alert():弹出消息框

  • console.log():控制台输出

输出语句:

3.1 alert()

alert('周吉瑞');

alert:消息、警报

  • alert 是 JS 的内置函数----------------①

  • 调用函数需要使用圆括号 ()

  • 周吉瑞 是函数的参数,此处的参数是一个字符串(JS 的字符串用 ''"" 包裹)

  • JS 语句末尾需要以 ; 结尾

注意事项:

  • JS 字符串支持 ''"",但是目前实际开发中 '' 用的更多,原因在于输入时可以不用按下 shift 键!

  • JS 语法规定是需要在句末加上 ; 表示结束的!但是即便你不加 ;,JS 解析引擎也会帮你自动加上,但还是推荐手动加上 ;,因为极少数情况下会出现意外!

  • JS 语法中的任何符号都应该是英文状态下的符号!

【效果】

【功能】

在浏览器(JavaScript 引擎 例如:Chrome V8)解析到 JS 文件中的 alert() 语句时,便会中断 JS 脚本的执行,同时弹出消息框,直到用户单击确定后,才继续执行后续的 JS 脚本。

3.2 console.log()

console.log('周吉瑞');

console:控制台

log:记录、日志

  • console 是 JS 的内置对象------------------②

  • 通过对象 “打点” 可以调用其内部的 log 方法(所谓 “方法” 就是对象能够调用的函数)

【效果】

F12 打开浏览器调试面板,点击 Console 控制台菜单。

【功能】

在浏览器(JavaScript 引擎 例如:Chrome V8)解析到 JS 文件中的 console.log() 语句时,会直接在浏览器控制台输出语句,并自动继续执行后续的 JS 脚本。

3.3 document.write()

作用:向body内输出内容

注意:如果输出的内容写的是标签,也会被解析成网页元素

document.write('<h1>我是标题</h1>')中“我是标题”以h1的字体大小显示。

输入语句:

prompt

作用:显示一个对话框,对话框中包含一条文字信息,用来提示用户输入文字

prompt('请输入您的姓名:')

4. 变量

变量:计算机语言中能储存计算结果或能表示值的抽象概念。

变量不是数值本身,它们仅仅是一个用于存储数值的容器!

4.1 定义变量

补充:

js中主要通过如下3个关键字来声明变量的:

关键字解释
var早期ECMAScript5中用于变量声明的关键字
letECMAScript6中新增的用于变量声明的关键字,相比较var,let只在代码块内生效
const声明常量的,常量一旦声明,不能修改

在js中声明变量还需要注意如下几点:

  • JavaScript 是一门弱类型语言,变量可以存放不同类型的值 。

  • 变量名需要遵循如下规则:

    • 组成字符可以是任何字母、数字、下划线(_)或美元符号($)

    • 数字不能开头

    • 建议使用驼峰命名

要想使用变量,第一步就是声明它,并给它赋值。

var a = 24;
var b = '周吉瑞';
  • var 定义变量的关键字

  • a 变量名

  • = 赋值符号

  • 24 变量值

4.2 使用变量

当变量被赋值后,就可以使用它了。

console.log(a);
console.log(b);

注意:使用变量时,变量名不能用引号包裹,否则会被识别为字符串!

4.3 改变变量的值

变量的值可以通过再次赋值被改变,改变变量的值时不需要再书写 var 关键字。

var a = 54;
a = 24;
console.log(a);

4.4 变量的合法命名

  • 只能由 字母数字_$ 组成,但不能以数字开头(建议普通代码一律以字母开头)

  • 不能是 关键字 或 保留字

  • 变量名大小写敏感,a 和 A 是两个不同的变量

函数、类名、对象的属性等也都要遵守这个标识符的命名规则!

4.5 推荐的变量命名风格

  • 小驼峰命名法:mathTestScore(吐血推荐)

  • C 风格变量命名法:math_test_score

  • 驼峰命名法:Java、JavaScript

  • 下划线命名法:C、C++、Python、Golang、SQL

4.6 变量的默认值

  • 一个变量只定义,但没有赋初值,默认值是 undefined(未定义)

  • 一个变量只有被 var 定义,并赋初值之后,才算正式初始化完成

var a;	// 只定义但没有赋初值
console.log(a);	// undefined
a = 24;
console.log(a);	// 24

4.7 变量的常见错误

  • 不用 var 定义,而直接将值赋予它,虽然不引发报错,但会产生严重的作用域问题。

请一律加上 var

a = 24; // 未使用 var 定义的变量默认为全局变量!成为 window 对象的属性。
console.log(a);	// 24
console.log(window.a);	// 24
console.log(window.a === a);	// true

关于作用域的问题,后面会介绍。

  • 尝试使用一个既没有被 var 定义过,也没有赋过值的变量,就会产生引用错误。

console.log(c);
// index.js:1 Uncaught ReferenceError: c is not defined at index.js:1

使用 strict 严格模式

JavaScript 在设计之初,为了方便初学者学习,并不强制要求用 var 申明变量。这个设计错误带来了严重的后果:如果一个变量没有通过 var 申明就被使用,那么该变量就自动被申明为全局变量:

i = 10; // i 现在是全局变量

在同一个 HTML 页面的不同的 JavaScript 文件中,如果都不用 var 申明,恰好都使用了变量 i,将造成变量 i 互相影响,产生难以调试的错误结果。

使用 var 申明的变量则不是全局变量,它的范围被限制在该变量被申明的 JS 文件或函数体内(函数的概念将稍后讲解),同名变量在不同的函数体内互不冲突。

为了修补 JavaScript 这一严重设计缺陷,ECMA 在后续规范中推出了 strict 模式,在 strict 模式下运行的 JavaScript 代码,强制通过 var 申明变量,未使用 var 申明变量就使用的,将导致运行错误。

启用 strict 模式的方法是在 JavaScript 代码的第一行写上:

"use strict";

这是一个字符串,不支持 strict 模式的浏览器会把它当做一个字符串语句执行,支持 strict 模式的浏览器将开启 strict 模式运行 JavaScript。

"use strict";
abc = "Hello, world";
console.log(abc);
// 如果浏览器支持 strict 模式,
// 下面的代码将报 ReferenceError 错误:Uncaught ReferenceError: abc is not defined

不用 var 申明的变量会被视为全局变量,为了避免这一缺陷,所有的 JavaScript 代码都推荐使用 strict 模式。

提示:"use strict" 语句可以放在 JS 代码的任意一行上,并且它只对它所在作用域下方的代码起作用。

4.8 等号表示赋值

var a = 10;
a = a + 1;
console.log(a);	// 11
a = a - 1;
console.log(a);	// 10

4.9 同时声明多个变量

var a = 0, b = 1, c = 2;	// 建议每行只声明一个变量

5. 变量声明提升

  • 变量声明的提升:可以提前使用一个稍后才声明的变量,而不会引发异常

  • 在执行所有代码前,JS 有预解析阶段,会预读所有变量的声明(不会提升赋值,只会提升定义)

// 先使用变量(不会报错)
console.log(a);	// undefined
// 后定义变量
var a = 10;
console.log(a);	// 10

实际的情况相当于:

// 变量声明提升的只是定义,不提升赋值!!!
var a;
console.log(a); // undefined
a = 10;
console.log(a); // 10

【注意事项】

  • 变量声明提升是 JS 的独有特性!

  • 在实际开发中,不要刻意使用变量提升的特性,一定要先定义再使用!

  • 严格模式对变量提升没有约束作用,严格模式是不对变量提升进行报错的!

二、JS基本数据类型

1 数据类型和检测

1.1 JavaScript中两大数据类型

(1)基本数据类型

JS 没有字符型(char),JS 的 String 是基本类型!

  • Number(数字)

  • String(字符串)

  • Boolean(布尔)

  • Undefined(未定义)

  • Null(空)

(2)复杂(引用)数据类型

  • Object(对象)

  • Array(数组)

  • Function(函数)

  • RegExp(正则表达式)

  • Date

  • Map (key,value)

  • Set 不允许重复,无序的

  • ……

1.2 typeof 运算符

使用 typeof 运算符可以检测值或者变量的类型。

typeof 是一个运算符,而不是内置函数,所以不用加 (),如果加了也不会报错,但是并不推荐!

typeof 5;		  // number
typeof '周吉瑞';	// string

利用浏览器控制台进行交互测试……

console.log(typeof 5);
console.log(typeof '周吉瑞');
var a = '5';
console.log(typeof a);

从以上测试也可以看出,JS 是一个弱类型的语言,变量值是什么类型,那么变量就是什么类型,而不用显式地指出变量的类型。

1.3 5种基本数据类型的 typeof 检测结果

类型名typeof 检测结果值举例
数字类型number52.5-0.5
字符串类型string'前端'"后端"'3.14'
布尔类型booleantruefalse
undefined 类型undefinedundefined
null 类型object(可以理解为空对象)null

2. Number(数字)类型

2.1 一切数都是数字类型

在 JS 中,所有数字不分大小、不分整浮、不分正负,都是数字类型。

typeof 925; // number
typeof 0.5; // number
typeof -24; // number

2.2 小数中 0 可以省略

在表达小数的时候,整数个位的 0 可以省略。

2.3 科学计数法

较大数或较小数可以写成科学计数法。

3e8;			// 300000000
typeof 3e8;		// number

3e-4;			// 0.0003
typeof 3e-4;	// number

2.4 不同进制的数字

(1)二进制数值以 0b 开头

0b10;	// 2
0b1111;	// 15

(2)八进制数值以 0 开头(代码中需要写成0o)

017;	// 15

(3)十六进制数值以 0x 开头

0xf;	// 15

2.5 一个特殊的数字型值 NaN

NaN 是 “not a number” 的意思,即 “不是一个数”,但它属于数字类型。

typeof NaN;	// number
  • 0 除以 0 的结果是 NaN,事实上,在 JS 数学运算中,若结果不能得到数字,其结果往往都是 NaN

  • NaN 有一个 “奇怪” 的性质:不自等(这个知识点将在后续课程中讲解)

0 / 0;	// NaN
5 - 3;	// 2
'我' - '你';	// NaN
'我' * '你';	// NaN
'我' / '你';	// NaN
'我' + '你';	// "我你"(字符串遇到加法是拼接功能)
NaN == NaN;   // false(NaN 不自等)

再次强调:NaN 是一个值(特殊的值),不是类型。

3. String(字符串)类型

3.1 字符串的表示

字符串要用引号包裹,双引号或者单引号均可(无论用哪种,都应该保持风格统一)。

注意:大部分 JS 项目习惯约定使用单引号(因为可以减少按下 shift 键)。

typeof "周吉瑞";	// string
或
typeof '周吉瑞';	// string

数字 10 和字符串 '10' 在语义上是不同的,前者表示一个数量,后者是一个文本。

3.2 字符串的拼接

加号可以用来拼接多个字符串。

'周' + '吉瑞';	// "周吉瑞"
'abc' + 'd' + 'ef';	// "abcdef"

3.3 字符串和变量的拼接

要将一个变量的值 “插入” 到字符串中,要满足变量左右两边至少有一边 + 字符串。

var year = 2022;
var str = '北京冬奥会在' + year + '年召开';	// "北京冬奥会在2022年召开"

var a = 24;
var str1 = 54 + a;		// 78
var str2 = '54' + a;	// "5424"

1 + '10'; // "110"

2 + '';	// "2"

3.4 空字符串

一些时候需要使用空字符串,直接书写闭合的引号对即可。

var str = "";
或
var str = '';

空字符串可以用于将变量变为字符串!

var a = 24;
console.log(typeof a);	// number
a = a + '';
console.log(a);	// "24"
console.log(typeof a);	// string

3.5 字符串的 length 属性

通过对 String 类型 “打点” 的方式,可以调用其内置属性。

注意:在 JS 中,String 是基本类型,之所以 String 可以 “打点” 调用属性和方法,那是因为 JS 的解释器会自动将基本类型包装成对应的 Object 类型。

字符串的 length 属性表示字符串的长度。

'我喜欢JS'.length(;	// 5
'我喜欢JS,我也喜欢TS'.length;	// 12
''.length;	// 0

3.6 字符串的常用方法

通过对 String 类型 “打点” 的方式,可以调用其内置方法。

“方法” 就是能够打点调用的函数,字符串类型有丰富的内置方法。

方法功能
charAt()得到指定位置字符
substring()提取子串
substr()提取子串
slice()提取子串
toUpperCase()将字符串变为大写
toLowerCase()将字符串变为小写
indexOf()检索字符串
trim()删除首尾空格
trimStart()删除首部空格
trimEnd()删除尾部空格
3.6.1 charAt() 方法

charAt() 方法可以得到指定位置的字符。

字符串中的每个字符都按顺序编号,编号从 0 开始。

'JS,NODE'
012345678910111213
'我喜欢JS,我也喜欢NODE'.charAt(0);		// "我"
'我喜欢JS,我也喜欢NODE'.charAt(5);		// ","
'我喜欢JS,我也喜欢NODE'.charAt(11);	// "O"
'我喜欢JS,我也喜欢NODE'.charAt(99);	// ""
'我喜欢JS,我也喜欢NODE'.charAt(-1);	// ""

超出范围的输出空字符 ""

3.6.2 substring()、substr() 和 slice() 方法

(1)substring(a, b) 方法得到从 a 开始到 b 结束(不包括 b 处)的子串 [a, b)

编程语言的区间一般都是:左闭右开!

'我喜欢JS,我也喜欢NODE'.substring(3, 5);		// "JS"
'我喜欢JS,我也喜欢NODE'.substring(10, 14);		// "NODE"
'我喜欢JS,我也喜欢NODE'.substring(10, 99);		// "NODE"
'我喜欢JS,我也喜欢NODE'.substring(-1, 4);		// "我喜欢J"

超出范围的部分,取到端点字符!

  • substring(a, b) 方法如果省略第二个参数,返回的子串会一直到字符串的结尾

'我喜欢JS,我也喜欢NODE'.substring(6);		// "我也喜欢NODE"
  • substring(a, b) 中,a 可以大于 b,数字顺序将自动调整为小数在前

应该没有人会这样用^^

'我喜欢JS,我也喜欢NODE'.substring(3, 5);		// "JS"
'我喜欢JS,我也喜欢NODE'.substring(5, 3);		// "JS"

(2)substr(a, b) 中,将得到从 a 开始的长度为 b 的子串

'我喜欢JS,我也喜欢NODE'.substr(3, 2);		// "JS"
  • substr(a, b) 中,b 可以省略,表示到字符串结尾

'我喜欢JS,我也喜欢NODE'.substr(3);		// "JS,我也喜欢NODE"
  • substr(a, b) 中,a 可以是负数,表示倒数位置

倒数第一位为 -1,而不是 -0

'我喜欢JS,我也喜欢NODE'.substr(-4, 2);		// "NO"

(3)slice(a, b) 方法得到从 a 开始到 b 结束(不包括 b 处)的子串

slice:切片

'我喜欢JS,我也喜欢NODE'.slice(3, 5);		// "JS"
  • slice(a, b) 的参数 a 可以是负数(与 substring(a, b) 的区别)

'我喜欢JS,我也喜欢NODE'.slice(-4, -1);		// "NOD"
// (-4, -1):从 倒数第4位 到 倒数第1位,不包括 倒数第1位
  • slice(a, b) 中,参数 a 必须小于参数 b,否则便会返回一个空字符串

'我喜欢JS,我也喜欢NODE'.slice(5, 2);		// ""
3.6.3 toUpperCase() 和 toLowerCase() 方法
  • toUpperCase() 转为大写

  • toLowerCase() 转为小写

'I Love You'.toUpperCase();		// "I LOVE YOU"
'IMooc'.toLowerCase();		    // "imooc"

注意:toUpperCase() 和 toLowerCase(),只是返回一个大小写格式,变量本身的值并没有改变。

var str = "I Love You";
console.log(str.toUpperCase());		// "I LOVE YOU"
console.log(str);				    // "I Love You"
str = str.toUpperCase();
console.log(str);				    // "I LOVE YOU"
3.6.4 indexOf() 方法

indexOf() 方法返回某个指定的字符串值在字符串中首次出现的位置

如果要检索的字符串没有出现,则返回 -1

这个方法用于判断字符串是否包含目标子串时特别有用!

'abcdebb'.indexOf('b');		// 1
'abcdebb'.indexOf('deb');	// 3
'abcdebb'.indexOf('m');		// -1
3.6.5 trim()、trimStart()、trimEnd() 方法
// 删除首尾空格
console.log('---' + ' 123 '.trim() + '---');
// 删除首部空格
console.log('---' + ' 123 '.trimStart() + '---');
// 删除尾部空格
console.log('---' + ' 123 '.trimEnd() + '---');

/*
---123---
---123 ---
--- 123---
*/

4. 数据类型的转换

4.1 其他值 ——> 数字

4.1.1 使用 Number() 函数

Number() 函数是 JS 内置函数。

由于 Number() 属于内置构造函数,所以 Number() 的首字母 N 要大写。

(1)字符串 ——> 数字

Number('123');			 // 123
Number('123.45');		 // 123.45
Number('-123');			 // -123
Number('-123.45');		 // -123.45
// 字符串中不支持有非数值字符
Number('123年');	    	// NaN
Number('2e3');			// 2000
Number('');				// 0

// 字符串不支持是数学表达式
Number('1+1');			// NaN
// 除了字符串外,还可以直接放一个表达式
Number(1+1);			// 2

(2)布尔值 ——> 数字

Number(true);			// 1
Number(false);			// 0

(3)undefined 和 null ——> 数字

Number(undefined);		// NaN
Number(null);			// 0
4.1.2 使用 parseInt() 函数

parseInt() 函数的功能是将 字符串浮点数 转为 整数

  • 自动截掉第一个非数字字符之后的所有字符

parseInt('3.14');		  // 3
parseInt('-3.14');		  // -3
parseInt('3周吉瑞.14');	// 3
parseInt(3.14);		  	  // 3
parseInt(-3.14);		  // -3
  • 所有文字都将被截掉

parseInt('3.14是圆周率');	// 3
  • 如果字符串以非数字开头,则转为 NaN

parseInt('圆周率是3.14');	// NaN
parseInt('一二三');		 // NaN
  • 不存在 “四舍五入”

parseInt('3.99');		  // 3
  • true、false、undefined、null 转为 NaN

之所以会出现这种情况的原因是,parseInt() 的原理是先将参数转换为字符串,再将字符串转为整数。

所以,true 会先被转为 'true',null 会被转为 'null',其它同理……

parseInt(true);			// NaN
parseInt(false);		// NaN	
parseInt(undefined);	// NaN
parseInt(null);			// NaN

parseInt() 函数的特性会用于处理数字的净化。

parseInt('24px');	// 24
// 去除了单位,保留数值!
4.1.3 使用 parseFloat() 函数

parseFloat() 函数的功能是将字符串转为浮点数。

绝大部分原理与 parseInt() 类似。

parseFloat('3.14');		// 3.14
parseFloat(3.14);		// 3.14

parseFloat('3.14是圆周率');		// 3.14
parseFloat('3.14.15');		   // 3.14

parseFloat('3.99');			// 3.99
parseFloat('-3.99');		// -3.99

4.2 其他值 ——> 字符串

4.2.1 使用 String() 函数

String() 函数是 JS 内置函数。

由于 String() 属于内置构造函数,所以 String() 的首字母 S 要大写。

(1)数字 ——> 字符串

变为 “长得相同” 的字符串。

科学计数法和非 10 进制数字会转为 10 进制的标准值。

String(123);		// '123'
String(123.4);		// '123.4'
String(2e3);		// '2000'
Stiing(NaN);		// 'NaN'
//Infinity 无穷大   -Infinity无穷小
String(Infinity);	// 'Infinity'
String(0xf);		// '15'

(2)布尔值 ——> 字符串

变为 “长得相同” 的字符串。

String(true);		// 'true'
String(false);		// 'false'

(3)undefined 和 null ——> 字符串

变为 “长得相同” 的字符串。

String(undefined);	// 'undefined'
String(null);		// 'null'
4.2.2 使用 toString() 方法

toString() 是几乎所有基本类型都自带的方法,功能是将值转为字符串。

纯数字不能直接 “打点” 调用 toString() 方法,要把纯数字用 () 包裹起来,此时 JS 会提升该数字为一个 Number 对象(包装对象)

toString() 方法依旧是返回一个字符串,并不改变变量原有的类型!

4.3 其他值 ——> 布尔值(了解)

Boolean() 函数是 JS 内置函数。

由于 Boolean() 属于内置构造函数,所以 Boolean() 的首字母 B 要大写。

(1)数字 ——> 布尔值

0 和 NaN 转为 false,其他数字都转为 true

Boolean(123);			// true
Boolean(0);				// false
Boolean(NaN);			// false
Boolean(Infinity);		// true
Boolean(-Infinity);		// true

全局属性 Infinity 是一个数值,表示无穷大。

(2)字符串 ——> 布尔值

空字符串 '' 转为 false,其他都转为 true

Boolean('');				// false
Boolean('abc');				// true
Boolean('false');			// true

(3)undefined 和 null ——> 布尔值

转为 false。

Boolean(undefined);				// false
Boolean(null);					// false

5. 加法器案例*(练习)

  • 使用 prompt() 函数弹出浏览器输入框,让用户输入两个数字

  • 由于 prompt() 函数输入的任何值都将默认为字符串,所以我们要将其先转为数字类型

  • 对数字进行加法运算

  • 最后用 alert() 显示结果

// 输入两个数字,并将他们转为数字类型
var a = Number(prompt('请输入第一个数字:'));
var b = Number(prompt('请输入第二个数字:'));
// 计算两个数字的和
var sum = a + b;
// 弹出结果
alert(sum);

6. 复杂数据类型简介

除基本类型值外,JS 的世界中还有复杂数据类型。

举例:

[1, 2, 3]

{ a: 1, b: 2 } //map集合

function() {
}

在 JS 中普通类型也可以包装为复杂类型(对象)

str01 = 'zjr';
str02 = new String('zjr');
str03 = String('zjr');
console.log(typeof str01);		// string
console.log(typeof str02);		// object
console.log(typeof str03);		// string
console.log(str01 === str02);	// false
console.log(str02 === str03);	// false
console.log(str01 === str03);	// true
// Number、Boolean 同理

复杂数据类型都是 “引用类型”(type: object),将在后续介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值