【WEB学习】Day09 - JavaScript 的数据类型

【WEB学习】Day09 - JavaScript 的数据类型



一、JavaScript 是什么

  • JavaScript 是世界上最流行的语言之一,是一种运行在客户端的脚本语言(Scrpit 是脚本的意思)
  • 脚本语言:不需要编译,运行过程中由 js 解释器(js引擎)逐行来进行解释并执行。
  • 现在也可以基于 Node.js 技术进行服务器端编程。

1.1 JS 的作用

  • 表单动态校验(密码强度检测)
  • 网页特效
  • 服务端开发(Node.js)
  • 桌面程序(Electron)
  • App(Cordova)
  • 控制硬件-物联网(Ruff)
  • 游戏开发(cocos2d-js)

1.2 浏览器执行 JS 的原理

浏览器实际上分成两部分:渲染引擎 和 JS 引擎。

  • 渲染引擎:用来解析 HTML 和 CSS,俗称内核,比如 chrome 浏览器的 blink,老版本的 webkit。
  • JS 引擎:也称 JS 解释器。用来读取网页中的 JavaScript 代码,对其处理后运行,比如 chrome 浏览器的 V8。

浏览器本身不会执行 JS 代码,而是通过内置 JavaScript 引擎(解释器)来执行 JS 代码。JS 引擎执行代码时逐行解释每一句源码(转换为机器语言),然后由计算机去执行,所以 JavaScript 被归类为脚本语言,会逐行解释执行。

1.2 JS 的组成

JavaScript 由三部分组成:
ECMAScript 、DOM 、BOM。
在这里插入图片描述
1.ECMAScript:
这是由ECMA国际进行标准化的一门编程语言,这种语言在万维网上应用广泛,它往往被称为JavaScript 或 JScript,实际上后两者是 ECMAScript 语言的实现与扩展。
在这里插入图片描述
正是 ECMAScript 规定了 JS 的编程语法和基础核心知识,所有浏览器厂商必须共同遵守该工业标准。

2.DOM —— 文档对象模型:
文档对象模型(Document Object Model,简称 DOM),是 W3C 组织推荐的处理可扩展标记语言的标准编程接口。通过 DOM 提供的接口可以对页面上的各种元素进行操作(大小、位置、颜色等)。

3.BOM —— 浏览器对象模型:
浏览器对象模型(Browser Object Model,简称 BOM),它提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。通过 BOM 可以操作浏览器窗口,比如弹出框、控制浏览器跳转、获取分辨率等。

1.3 JS 初体验

行内式的 js 直接写道元素的内部即可。

<input type="button" value="按钮" onlick="alert('按钮被点了')">

内嵌式的 js 在 <script></scrpit>中写。

<script>
	alert('我内嵌');
</script>

外部 js 可以导入外部的 js 文件来导入。
在这里插入图片描述
在这里插入图片描述

<script src="tset.js"></script>

这样就可以引入。
1.行内式 JS:

  • 可以将单行或少量 JS 代码写在 HTML 标签的事件属性中(以 on 开头的属性),如:onclick。
  • 注意单双引号使用:在 HTML 中推荐使用双引号,JS 中推荐使用单引号
  • 特殊情况下再使用。

2.内嵌 JS:

  • 可以将多行 JS 代码写到 <script> 标签中。
  • 常用。

3.外部 JS:

  • 利于 HTML 页面代码结构化,美观。
  • 引用外部 JS 文件的 script 标签中间不可以写代码:
<script src="tset.js"></script>
  • 适用于 JS 文本量大的情况。

1.4 JS 注释

js 注释有多种,有单行、多行。
单行注释:

//

多行注释:

/* 注释内容 */

二、JavaScript 的数据类型

2.1 JavaScript 输入输出语句

为了方便信息的输入输出,JS 提供了以下语句:
在这里插入图片描述
输入框:

    <script>
       //输入框
       prompt('请输入您的年龄');
    </script>

警示框:

    <script>
       //警示框
       alert('警告!');
    </script>

控制台输出:

    <script>
       //控制台输出
       console.log('程序员才能看到我!');
    </script>

2.2 变量

2.2.1 什么是变量

变量就是用于存储数据的容器,我们可以通过变量名获取数据和修改数据。

2.2.2 如何使用变量

首先要,声明一个变量,然后赋值。
声明变量:

//声明变量
var age; //声明一个名称为 age 的变量

var 是 variable 的缩写,用来声明变量,声明变量后,计算机会自动为变量分配内存空间。
age 是变量名,我们通过变量名访问内存中分配的空间。
赋值:

age = 10; //给 age 这个变量赋值为 10

测试:输出结果

console.log(age);

声明和赋值可以同时进行,是为初始化:

var myname = '马力欧';

我们输入的信息可以被变量存储:

var myname = prompt('输入你的名字');
console.log(myname);

同时声明多个变量,可以用逗号隔开:

var age = 10, name = 'duo', sex = 2;

使用变量有三种特殊情况:
在这里插入图片描述
虽然没有声明变量,直接赋值使用了,但是没报错,这在 JS 是允许的,但是这个变量将会成为一个全局变量,看后面内容。

2.2.3 变量命名规范

在这里插入图片描述

2.3 数据类型

2.3.1 变量的数据类型

变量的数据类型是不确定的,只有在运行的时候,才能确定一个 var 的数据类型,它是根据值来确定的。
JS 是动态语言,其变量的数据类型是可以变化的。

var x = 10; //x 是数字型
x = 'pink'; //x 变成了字符串型
2.3.2 数据类型的分类

JS 把数据类型分为两类:
1.简单数据类型:
在这里插入图片描述

(1)数字型 Number:

  • JS 数字类型即可保存整数,也可以保存小数(浮点数)。
var num = 10;
var Pi = 3.14;
  • 数字型也可以存储为八进制:
var num1 = 010;

数字前面加 0 就表示八进制。

  • 数字型也可以存储为十六进制:
var num2 = 0xa

数字前面加 0x 就表示十六进制。

  • 数字类型数据的存储范围是这样的:
alert(Number.MAX_VALUE); //1.7976931348623157e+308
alert(Number.MIN_VALUE); //5e-324

JS 中的数字范围上下界限如上所示。

  • 数字型还有三个特殊的值:
alert(Infinity);  //Infinity
alert(-Infinity); //-Infinity
alert(NaN);		  // NaN

Infinity,代表无穷大,大于任何数值。
-Infinity,代表无穷小,小于任何数值。
NaN,Not a number,代表一个非数值。

  • 我们可以通过 isNan( ) 方法判断非数字,并且返回一个值,如果是数字,返回 false,如果不是数字,返回 true。
console.log(isNaN(12));   		// false
console.log(isNaN('字符串'));	// true

(2)字符串型 String:
字符串型可以是引号中的任意文本,其语法为 双引号 " " 和 单引号 ’ ’ 引起来的内容。因为 HTML 标签里的属性使用的是双引号,所以 JS 里更推荐使用单引号。

  • JS 的字符串可以嵌套,它可以用单引号嵌套双引号,也可以用双引号嵌套单引号,即——外双内单,外单内双。
var strMsg1 = '我是"程序猿"'; // ''包""
var strMsg2 = "我是'程序猿'"; // ""包''

我们可以根据字符串里需要加引号的内容的单双,来确定外部字符串用的引号。

  • JS 里也有类似 HTML 的特殊转义符,它们如下:
    在这里插入图片描述
    转义符都是 \ 开头的。

  • 字符串有计算长度的方法和拼接方法:

// 1. 检测获取字符串的长度 length
var str = 'my name is Rosalina,';
console.log(str.length(str.length);

// 2. 多个字符串之间可以使用 + 进行拼接,其拼接方式为: 字符串 + 任何类型 = 拼接之后的新字符串,在拼接之前,会把所有与字符串相加的任何类型都转成字符串。
console.log('沙漠' + '骆驼');  //沙漠骆驼
console.log('我今年方' + 28);  //我今年方28
console.log('我是' + true);	  //我是true
console.log('12' + 12);		  //1212

字符串也可以和变量相加:

var age = 18;
console.log('我今年' + age + '岁啦!');

(3)布尔型 Boolean:
布尔类型有两个值:true 和 false,其中 true 表示真(对),而 false 表示假(错)。
但是,布尔类型和数值类型可以互通参与运算:

var flag1 = true; 		// flag1 布尔型
var flag0 = false; 		// flag0 布尔型
console.log(flag1 + 1);	// true 参与加法运算当1来看
console.log(flag0 + 1); // false 参与加法运算当0来看

(4)Undefined 和 Null:

  • 前者是声明后没有赋值的变量会有一个默认值 undefined。表示未定义数据类型。
    如果把一个 undefined 数据类型的数据和其他类型变量相加,也是可以的,结果要注意一下。
var variable = undefined;   //手动定义了一个 undefined 类型的变量 variable
console.log(variable + 'name'); // undefined + 字符串,结果为:undefinedname
console.log(variable + 1);		// undefined + 数字,结果为:NaN

undefined 和 字符串 相加,undefined 自己会转化成字符串,内容就是 ‘undefined’。
undefined 和 数字 相加,结果不是一个数字,所以是 NaN。

  • 后者是空值 null ,意思就是这个变量值就是空值。
var space = null;
console.log(space + 'name'); // nullname
console.log(space + 1);		// 1

null 和 字符串 相加,null 自己会转化成 ‘null’ 字符串。
null 和 数字 相加,因为 null 是什么也没有,所以相加后还是后面那个数字本身。

2.3.3 获取检测变量的数据类型

typeof 可以用来获取检测变量的数据类型。

var num = 10;
var str = '你好';
var nul = null;
var und = undefined;
var bool = true;
console.log(typeof num);	//number
console.log(typeof str);	//string
console.log(typeof nul);	//object
console.log(typeof und);	//undefined
console.log(typeof bool);	//boolean

null 是 object 类型,注意下。
通过 typeof,我们可以发现,通过 prompt 输入的数字,竟然是 string 类型。

var age = prompt('请输入您的年龄');
console.log(age);
console.log(typeof age);   // string

在浏览器控制台里,我们可以通过字符颜色判断是什么类型。
在这里插入图片描述
蓝色的数字是数值型,黑色的文字是字符串类型,蓝色的 true 或 false,则是布尔类型。

2.3.4 数据类型的转换

由于输入框默认是字符串类型,我们需要学会类型转换。

1.转换为字符串类型:
在这里插入图片描述

// 1. 把数字型转换为字符串类型 toString()
var num = 10;
var str = num.toString();
console.log(typeof str);   // string
// 2. 把数字型转换为字符串类型 String()
console.log(String(num));
// 3. 加号拼接字符串
console.log(num + '');   // num加一个空串变成字符串类型

2.转换为数字类型:
在这里插入图片描述

// 1. 利用 parseInt() 把字符串转换为整数
var age = prompt('请输入你的年龄');
console.log(parseInt(age));
// 利用 parseInt() 还可以把像素单位去掉
console.log(parseInt('120px'));	//120
// 2. 利用 parseFloat() 把字符串转换为浮点数
var f = prompt('请输入一个小数');
console.log(parseFloat(f));
// 3. 利用 Number() 函数可以强制把字符串类型转换为数值型
var str = '123';
console.log(Number(str));
// 4. 利用算术运算 - * 可以实现隐式的转换
console.log('12' - 0);			// 12
console.log('123' - '120');		// 3
console.log('123' * 1);			// 123

3.转换为布尔类型:
转换为布尔型只有一个方法,Boolean()函数。

  • 代表空、否定的值会被转换为 false,如 ‘’、0、NaN、null、undefined。
  • 其他值都会被转换为 true。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值