Unit01: JavaScript 概述 、 JavaScript 基础语法 、 变量和常量 、 数据类型
3.JavaScript:
-- 编写交互“程序”的语言
-- 运行于js解释器/引擎中
-- 解释执行:逐行读取,先读先执行,后读后执行
js发展史:
*** 1996年 ECMAScript标准 -->定义js的“核心语法”;
Netscape -->遵照标准,实现了JavaScript语言
Microsoft -->遵照标准,实现了JScript语言
*** 2000年 W3C:DOM标准 -->操作“网页内容”的标准,所有浏览器都兼容的标准;
*** BOM:操作“浏览器窗口”的编程接口;
js=ECMAScript标准 + DOM标准 + BOM;
2004年 Netscape倒闭 --> Mozilla 出现(Netscape提供开元代码):firefox
js的用途:
客户端JavaScript;
-- 客户端数据计算;
-- 表单输入验证;
-- 浏览器时间的触发和处理;
-- 网页特效显示效果操作;
-- ...
浏览器内核:
-- 内容排版引擎
-- 脚本解释器引擎
Chrome V8引擎 元代码
如何运行:
-- 浏览器内置引擎;
-- 独立安装js引擎;node js;
如何编写:4种方式
-- 直接在浏览器“控制台(F12)”中,编写js脚本:(空白页:about:blank)
console:控制台,编写和调试js程序的窗口;
比如:
console.log("Hello world!");
console:特指控制台窗口;
.: 的;
log: console中提供的一个功能;
接受一个字符串参数,在控制台输出该字符;
*** 关键字区分大小写
*** console控制台快捷键
Enter 执行;
Shift+Enter 换行;
↑
↓
-- 网页中编写js脚本:
script元素中;可以放在网页任何位置;
随网页加载解释执行
<script>
document.write("HELLO WORLD! <script><br />换行");
//DOCUMENT 文档 当前网页;
//write 编写;遵循HTML语法;
//document.write 内容写在body里;
//write里换行 :<br />
</script>
单独js文件保存js脚本程序:
-- 1.创建
-- 2.引入:<script src=""></script>
***脚本程序:不需要预编译 ,边解释边执行;
-- 元素的事件处理程序中编写:
事件触发执行;
<button onclick="window.alert('click windowAlert')">click me</button>
<!------------当前窗口 的 警告框--------->
<button onclick="document.write('click documentWrite')">click me</button>
<!--------------当前网页所有内容被“替换”成document.write输出的内容--------->
如何调试:
bug:程序中的一切错误;
debug:发现错误,解决错误;
js程序出错:希望的效果没出来;--> F12 --> console;
console:
错误信息:3部分;
- 错误类型
- 错误原因
- 出错位置的链接
出错现象:出错位置同script下的程序;
出错位置前的程序正常执行;
出错位置及出错位置后的程序不执行;
其他的script不受影响
【变量】
- 内存中存贮一个"1个"数据的存贮空间,再起个名字;
- 程序中的数据都要先用变量保存,再处理;
- 如何使用变量:
-- 声明:在内存中创建一个新变量
var 变量名;
--- 变量命名:
1.不能以数字开头;
2.不能用保留字;
3.见名知意;
4.驼峰命名:listStyleType;
-- 赋值:将一个数据存入变量中;没赋值的默认是undefined;
变量名=值;
=:将=右边的值存入=左边的变量中保存;
对已有值的变量,新值替换旧值;
*** 申明同时初始化:第一次给变量赋值;
var 变量名=值;
-- 取值:从变量中取出数据进行运算;
在程序任何位置只要使用"变量名"等效于直接使用变量名的值;
- 特殊情况:2种 *******************************************************************
-- 为一个从未申明的变量赋值:不会出错;会创建同名变量;
会自动创建同名变量,在保存数据;
-- 从一个从未申明的变量中取值:“会出错”;
referenceError:找不到对象,变量未申明;
********** 申明提前:
在程序正式执行前,都会将“所有var申明的变量提前”到开始位置,集中创建;赋值留在原地;***
/*只要判断申明提前的问题,都要先提前,在判断输出*/
【常量】
- 一旦申明并初始化后,值不可改变的变量;
- when:只要保存一旦创建,不可擅自改变的量时;
- How :const 常量名=值;
π等;
常量名都要大写;PAI=3.1415926;
常量的值不能改变;
/**
**1弧度=1r
**1周=2πr
**1周=2π弧度
**360角度=2π 弧度
**1 角度=π/180 弧度
*/
【数据类型】
- 内存中储存不同数据的储存格式;
js中数据类型:2大类;
1.原始数据:值保存在变量本地的数据类型;5种
- Number类型;
-- 保存数字的类型,不加引号;
when:要参与算数计算,比较大小;
-- 保存数字的类型,加引号;
when:字符串;
所占空间:64位二进制数字保存;8字节;
64Bit=8bytes
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
强调:数字所占空间与数字大小无关;所有数字都占8字节;
***舍入误差:因为计算机无法精确表示1/10(二进制计算);导致计算机出现误差;***************
解决方法:前面按8位四舍五入,最后一步按两位小数四舍五入;
n.toFixed(2);将n按2位小数四舍五入;
1GB=1024MB
1MB=1024KB
1KB=1024bytes
1bytes=8Bit
unitPrice 单价
total 总价
money
change 找零
- String类型;
只要是String类型必须带引号;
when:储存文本或仅用于显示的数字;
所占空间:js的程序内存中,字符都是用unicode表示的;
unicode:对全球主要语言中的每个字符都编一个号;计算机只认识0和1(二进制);
英文字母、标点:1字节;
汉字:2字节;
var str="一"; 汉字
str.charCodeAt(0); 编号 19968
var n=19968;
n.toString(2); 二进制数字 "100111000000000"
var yun="云";
yun.charCodeAt(0)
20113
var n=21521;
n.toString(2)
"101010000010001"
var n=25104;
n.toString(2)
"110001000010000"
var n=20113;
n.toString(2)
"100111010010001"
*** 字符串一旦创建,不能改变;
要想改变,只能创建新字符串,替换旧字符串;(程序自动执行)
+:字符串连接;
*** 每个英文字符占1bytes(1字节),每个汉字占2bytes(2字节);
- Boolean 真、假;
when:表示二选一的值时;
- undefined 只有一个值undefined;
- null:不指向任何地址;
2.引用类型:值不保存在变量本地的数据类型