ECMAScript标准:JavaScript核心语法
微软:Jscript
ECMAScript标准:一纸空文
JavaScript和JScritp都号称完全实现了
ECMAScript标准
W3C:DOM标准:专门操作HTML元素,CSS样式,事件的统一标准。
BOM:专门操作浏览器窗口的工具。
没标准,由浏览器厂商自行实现。
JavaScript=ECMAScript(核心语法)+DOM(操作网页内容)+BOM(操作浏览器窗口,很少用到)
Mozilla→Firefox
JSer最大挑战:浏览器兼容性问题
JavaScript典型用途:
- 客户端数据计算
- 客户端表单验证
- 动画
JavaScript特点:
纯文本;解释执行;弱类型;基于对象
- 使用浏览器自带的JS解释器:
F12→控制台
光标处写脚本代码,回车执行。
console:指代控制台:专门调试程序输出结果的窗口。
log:控制台console提供的一个功能:向控制台输出一行日志
多行:shift+enter→换行
**JavaScript中区分大小写!**
**字符串单双引号都行**
- 单独安装专门解释器软件:
node.js Chrome V8
win键+R→cmd→node
退出:两次Crtl+c
执行.js文件:1.先cd到.js文件所在路径
2.node 文件名 回车,。
- 随网页一同运行:
浏览器包含两种工具:
排版引擎:专门加载HTML内容和CSS样式
解释引擎:专门运行js脚本
<script></script>专门保存JS脚本块的元素
<script>中脚本块何时运行?随网页加载,解释执行。
<script>中都要用JS语法!
html元素的事件”属性”中:
什么是事件?元素可以根据鼠标或键盘的不同操作响应不同的交互行为。
<script>解释执行,读到才执行。先读到先执行。<script>放置的先后顺序影响程序结果。
优化:放在body的最后
一次定义,处处使用;一次修改,处处生效!
解决:凡是重复编写的代码块,都要封装为一个方法:
方法:执行一个专门功能的一组代码的序列。
定义在<head>下的<script>中
语法:function 方法名(){重用的代码块}
调用:方法名()→调用后立即执行。
*不调用不执行*
调试:but? debug!调试遇到问题了?那么解决问题!
只要没反应或效果没出来就是出错!→F12
查看错误原因→定位错误位置!
<script>脚本块中的错误,仅影响”当前脚本块”中出错”位置之后”的脚本执行,不影响<script>之外的其他元素加载或脚本块执行。
funcition中的错误:只有调用方法时才能出发!
页面内部脚本块问题:仅当前页面可用!
解决:外部.js文件!
什么是.js文件:专门保存js脚本源代码的文件。
源代码都要放到js解释器才能执行,不能双击。
如何使用.js文件?
- 创建.js文件,编写源代码
- 在页面中引入外部.js文件
内外部同名方法,解释执行!
ECMAScript:区分大小写;字符串必须用引号(单双都行)包裹;每条语句结尾都建议有分号。
语句:让程序可以做一件事的一行命令
脚本块:多行语句的序列
程序:让计算机模拟执行人类的想法
注释:不会被解释执行或显示的代码说明→给程序员看的。注释也占网页流量!生产环节必须去掉。
HTML注释:<!---->
CSS注释:/**/
JS注释://单行注释 /*多行注释*/
什么是变量?内存中专门储存数据的空间。程序都是在内存中运行。
何时使用变量?只要在程序中临时存储数据,都要放在变量中
怎么使用变量?声明,命名,初始化和使用
声明:在内存中开辟一个存储空间,并且起一个名字
怎么声明?var 变量名;
赋值:将等号右边的数据,装入等号左边的变量中!
如果未赋值:js默认赋值为undefined
命名规则:见名知意
保留字/关键字不能当变量名
保留字:js中已经占用的特殊意义的关键字
使用:使用变量名等效于直接使用变量中存储的数据
一般常量命名用大写。常量一旦创建,值不可改变的特殊变量。
程序里做动画只认角度不认弧度。
如何使用常量:const 常量名=常量值;
强调:只有等号可以向变量中存入新值,普通运算不会改变变量的值,只是使用变量的值。
只要带var就是声明,只要声明就会开辟内存空间。
js中新同名变量的空间会替换旧变量的空间。
有几个var,就会创建几个存储空间。
数据类型:变量中存储的数据的类型。
js是“弱类型”:变量本身没有类型,只有变量中的值才有类型。
一个变量,可以反复保存不同类型的数据。为什么要有数据类型:现实中所有数据根据用途不同,都分为不同数据类型。
JavaScript数据类型:分为原始类型与引用类型
原始类型:number:数字;string:字符串;boolean:布尔;null:空;undefined:未定义。
引用类型:object:对象;Function:函数;Number:数字;String:字符串;Boolean:布尔;Data:日期;Error:错误;
原始类型:数据保存在变量本地!
Number类型:表示一切用于比较或数学计算的数字
程序中数字分整数、浮点数(现实中的小数)
js中一切数字都用number保存,不分整数类型和小数类型。
如何定义number类型值?不带引号的数字字面量
程序中数字类型的舍入误差:程序中不能准确表示1/10,就好比现实中不能准确表示1/3一样!
如何修正:按指定位数四舍五入:数字.toFixed(小数位数)
console.log(change.toFixed(2));
将change中的数据,按2位小数四舍五入,因为计算机对于0.1有可能会算不尽,就跟我们算不尽三分之一一样,为了避免这个问题,需要使用这个方式。
今后计算结果小数位数超长,说明碰到舍入误差。按位四舍五入。
string类型:一串字符的序列!
Unicode:所有语言文字中的字符编号
Why:因为计算机智能处理数字,无法处理文字。
计算机处理unicode编号,就等效于处理编号对应的文字。
转义字符:专门表示非打印字符以及特殊符号
如何使用转义字符:\特殊符号 比如:\n换行 \t tab键
如果字符串内容中包含于语法相冲突的特殊字符,用\转为原文
字符串变量的内容一旦创建不可改变!如果改变,只能创建新字符串,抛弃旧字符串。
笔试题:
var str=”Hello”;
str=str+”World”;
有几个字符串?答:3个。
布尔boolean类型:仅有两个值的特殊数据类型:true,,false
何时使用boolean?只要一个值只有真假的两种情况,就用boolean类型。
undefined类型:表示一个变量仅声明过,但从未赋值。所以未赋值的变量,默认值都是undefined.
undefined类型的值还是undefined.
原始类型大小:
number:整数4字节,浮点数8字节
string:每个字符2字节
数据类型间的转换:
隐式转换:程序自动转换数据类型(坑)
弱类型:1.变量声明时不必限定数据类型,今后可能保存任何类型数据。
2.数据类型间可以自动类型转换
仅考虑+:只要有字符串参与,一切类型都加””变为字符串。如果没有字符串,都转为数字计算。如果遇到布尔类型的怎么办?那么true转为1,false转为0;
字符串加数字的案例:
强制转换:程序员通过调用专门函数手动转换类型
2 String: x.toString()→将X转为字符串类型,x可以为任意类型。
2 Number: Number(x)→将任意类型转为number类型
string→number:
转为整数:var num=parseInt(“str”)
读取字符串中的整数部分
- 从第一个字符向后读。
- 如果碰到第一个数字字符,开始获取数字,再次碰到不是数字的字符(包括小数点),停止读取。
- 如果开头碰到空格,忽略。
- 如果碰到的第一个非空格字符,不是数字说明不能转→NaN,NaN的意思是Not a Number。什么是NaN:不是数字(内容)的数字(类型)
转为浮点数:var num=parseFloat(“str”)
读取字符串中浮点数部分。
用法和parseInt完全相同
唯一差别:parseFloat认识小数点,仅认第一个。而且parseFloat如果能转成整数,就不会转为浮点数,例如25.0,那么就会转为25,.25转为0.25
prompt(“提示信息”):专门用于请求用户输入数据,收集数据的对话框。
var str=prompt(“提示信息”);
凡是从页面上获得的数据,都是字符串!必须先来转换再计算。