2015年10月23日JS笔记

时间:2021-10-09 11:47:40

ECMAScript标准:JavaScript核心语法

微软:Jscript

ECMAScript标准:一纸空文

JavaScript和JScritp都号称完全实现了

ECMAScript标准

W3C:DOM标准:专门操作HTML元素,CSS样式,事件的统一标准。

 

BOM:专门操作浏览器窗口的工具。

没标准,由浏览器厂商自行实现。

JavaScript=ECMAScript(核心语法)+DOM(操作网页内容)+BOM(操作浏览器窗口,很少用到)

 

Mozilla→Firefox

JSer最大挑战:浏览器兼容性问题

 

JavaScript典型用途:

  1. 客户端数据计算
  2. 客户端表单验证
  3. 动画

 

JavaScript特点:

纯文本;解释执行;弱类型;基于对象

  1. 使用浏览器自带的JS解释器:

F12→控制台

光标处写脚本代码,回车执行。

console:指代控制台:专门调试程序输出结果的窗口。

log:控制台console提供的一个功能:向控制台输出一行日志

多行:shift+enter→换行

**JavaScript中区分大小写!**

**字符串单双引号都行**

  1. 单独安装专门解释器软件:

node.js Chrome V8

win键+R→cmd→node

退出:两次Crtl+c

执行.js文件:1.先cd到.js文件所在路径

2.node 文件名 回车,。

 

  1. 随网页一同运行:

浏览器包含两种工具:

排版引擎:专门加载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文件?

  1. 创建.js文件,编写源代码
  2. 在页面中引入外部.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”)

                读取字符串中的整数部分

  1. 从第一个字符向后读。
  2. 如果碰到第一个数字字符,开始获取数字,再次碰到不是数字的字符(包括小数点),停止读取。
  3. 如果开头碰到空格,忽略。
  4. 如果碰到的第一个非空格字符,不是数字说明不能转→NaN,NaN的意思是Not a Number。什么是NaN:不是数字(内容)的数字(类型)

转为浮点数:var num=parseFloat(“str”)

           读取字符串中浮点数部分。

用法和parseInt完全相同

唯一差别:parseFloat认识小数点,仅认第一个。而且parseFloat如果能转成整数,就不会转为浮点数,例如25.0,那么就会转为25,.25转为0.25

 

prompt(“提示信息”):专门用于请求用户输入数据,收集数据的对话框。

var str=prompt(“提示信息”);

凡是从页面上获得的数据,都是字符串!必须先来转换再计算。