Javascript的组成:ECMAScript,DOM,BOM
ECMAScript:语法,规范,标准,定义了javascript的语法规范,描述了语言的基本语法和数据类型。 用来约束代码用什么样的格式书写,写什么,如何执行。
DOM(Document Object Model):文档对象模型,document,表示网页。
提供了网页的相关操作,标准化组织是W3C。
有一套成熟的可以操作页面元素的 API,通过 DOM 可以操作页面中的元素。
如:增加元素,删除元素,改变元素位置等
BOM(Browser Object Model):浏览器对象模型,window,表示浏览器。
提供了浏览器的相关操作,沿用了ECMAScript的标准,在此之上添加各个浏览器自身的特色功能
有一套成熟的可以操作浏览器的 API,通过 BOM 可以操作浏览器。
如:弹出框、浏览器跳转、获取分辨率等
Javascript书写位置规范:
1.行内:标签内,通过行为属性执行相关js代码
<div οnclick=“alert(hello div”)’>可点击的元素</div>
必须通过行为触发,不推荐使用,结构和行为的耦合过高,不利用多个标签之间的行为复用
2.内部:html文件内,使用script标签标记js代码
自动执行,不太推荐使用,html和行为的耦合过高,可以做到多个标签之间的行为复用,但是不利于多个html文件之间的行为复用
3.外部:独立的js文件内,通过script标签的src属性引入,建议使用。
自动执行,推荐使用,完全做到html和行为的解耦,方便html文件之间的行为复用,方便独立管理。
变量的命名规则:
必须使用字母 或 下划线 或 $开头,可以包含数字,严格区分大小写,不允许使用关键字或保留字,尽量语义化,词必达意
建议:使用组合单词表示复杂的含义
可以使用数据类型的首字母做前缀
建议:使用组合单词后,再使用驼峰式命名
大:从第一个单词的首字母开始大写
构造函数命名使用大驼峰
小:从第二个单词的首字母开始大写
一般变量使用小驼峰
小技巧:可以通过给单词加前缀,避免触发关键字和保留字
Javascript数据类型:
字符型:string: 所以使用引号(‘ ’)包裹的数据都是字符
数值型:number:0,1,2,3,4.....NaN
布尔型:boolean:true,false
Undefined: undefined: 没有值,变量声明了,但未赋值。在内存中有这个数据的位置
Null:null,空,空值,还是空地址
对象型:object数据的打包,是一种复杂数据。无序集合是object对象,有序集合是array对象
Object对象的基本语法:一般由键值对组成,一个对象可以存在多个键值对,键和值一一对应,成对出现,标志为{}
Array对象的基本语法:一般由多个数组组成,标志为{}
函数型:function:一段代码的打包,是一种复杂数据。打包之后,需要被动执行
symbol:类似于字符型数据,基本数据类型。特点:任何两个symbol都不相等。作用:用来标记值,用于标记唯一的值或状态。
JavaScript 运算符:
算术运算符: +,-,*,/,%,**
关系运算符;> ,>=,<,<=,==,!=,===,!==
逻辑运算符:||,&&,!
赋值运算符:=,可以操作任何数据,和算术运算符结合:+=,-=,*=,/=,%=
自增自减:自增++ 自减--
前:先运算后使用 后:先使用后运算
数据类型的转换:将不符合要求的数据,转成符合要求的数据
方式:
隐式:不主动控制,在程序执行过程中,将当前数据作为其他数据使用
显式(强制):主动控制,使用一些确定的方法,强行将数据转成其他类型
注意:原数据不会受到数据类型转换的影响,转换得到的是一个新数据
隐式:
场景:
1.运算符:
+ 转字符 -,*,/,%,** 转数值 ++ - - :转数值
>,>=,<,<=,==,!= 转数值 ||,&&,! 转布尔
Alert,document.write 转字符 IsNaN的小括号 if的小括号 规则(同显示转换规则)
显式:
转换方法:
转字符:string() 转所有 xx.toString () 除了undefined和null 都可以转字符
转数值:parseInt()主要用于数值和字符转数值,取整 字符,非严格转换模式
ParseFloat()主要用于数值和字符转数值,保留小数 字符,非严格转换模式
Math.round()四舍五入取整,字符,严格转换,所有转数值
Number()完整转换,字符,严格转换,所有转数值
转布尔:boolean(要转换的数据)
数据转换,只发生在运算过程中,或转换时,不会对原数据造成任何影响
规则:
其他转字符:直接套引号:number,boolean,function
报错:undefined,null
转成:[ onject,object] :object 将中括号替换成引号:array
其他转数值:
字符:非严格转换:从左向右检测,能转则转,不能转,停止; 如果第一位就不能转,直接NaN
严格转换:任意位置不允许出现非数字,否则就是NaN;
True为1 false为0 空数组和null为0
数组:有且只有一个能直接转成数值的数据,就是该数值,否则就是NaN
数组的其他形式,花括号对象,函数,undefined,都是NaN
其他转布尔:字符转布尔:非空字符为true,空字符为false
数值转布尔:0和NaN为false 其他都是true
复杂数据,对象,数组,函数:都是true Undefined和null都为false