-
javascript 是由三部分组成
ecmacsript 提供核心的功能,包括语法,类型,语句,关键字,保留字
,操作符,对象等
dom, 即文档对象模型, 把整个页面当作一个多层节点的结构
bom,浏览器对象模型,实现浏览器页面以外的部分,各种直接对于浏览器窗口的直接操作 -
关于<script>元素,在页面中有两种加载方式,
第一种是直接 <script></script>里面写js代码,第二种是对他的属性src导入外部链接。同时,浏览器加载时,会按照顺序从上到下的加载,所以为了防止script加载时间过长,导致页面打开后一片空白,通常将<script*>元素放在body里面,让body里的标签先加载。
其中,script具有async和defer两个属性,只能对外部导入的script起作用。async是一个异步加载的声明,即浏览器body标签全部加载后才会加载这个,defer属性是一个延迟加载,和async类似,但区别是,defer属性生命的script是同步的,即加载完其他标签后如果有两个以上的script标签声明了defer属性,则按照其默认的顺序执行。而async是异步的,所以不会按照其默认的顺序执行,所以不会阻塞页面的加载。 -
语法
区分大小写,
标识符 的要求:首字母英文或下划线或 , 其 他 字 符 可 以 是 英 文 字 母 下 划 线 , ,其他字符可以是英文字母下划线, ,其他字符可以是英文字母下划线,或者数字
关键字:有特殊作用的,可执行特定操作 eg: break,continue
保留字:未来可能被用作关键字 eg:int
-
变量
是松散类型的,可以存任何值,未经初始化的时候,会自动赋值undefined
-
数据类型
boolean,string,null,number,undefined,symbol,
以及一个复杂的数据类型 对象
用typeof来判断数据类型,eg:null =》object,所以一般用判断对象是否赋值成功的时候,都会先给那个变量传一个null值,然后判断其(变量!=null)
null和undefiend用==来操作的时候。是返回true的
number类型可以存储不同基数的数据,浮点数值存在舍入误差问题,因为其精确度可达到小数点后17。es规定可存在的number的大小是有限的
NaN意思是不是一个number,isNaN()判断参数是否 不是数值。参数中某些不是数值的数据会动态的转换成数据的
-
string包含一些特殊的字符字面量也叫转义序列,但是每个转义序列只占一个字符长度,
字符串是不可变的,重新给其变量赋值,意味着创建一个新的字符串然后销毁原来的字符串
null和undefined转换成string类型的时候,只能用String()函数。=》‘null’和“undefined”
null和undefined转换成number类型的时候,用Number()函数。=》0和NaN
-
位操作符(将数值转换为二进制码)
~按位非即返回数值的反码=》原数据的负值减一
&按位与 即两数的数值对应位都是1时才返回1
|按位或 即两数的数值对应位有一个是1的情况下就返回1
^ 按位异或 即两数的数值对应位只有一个是1的情况下才返回1
<<左移 即数值有效二进制自动向左移动,数值变大
>> 有符号的右移 跟上面一样,只是数值会缩小 2的n次方
>>> 无符号的右移 当数值是正数时,会出错,因为会自动加0补足数据,会把 负数的二进制码变为正数
-
关系操作符
操作数有数值时,转换为数值来比较,有NaN时统一返回false,
都为字符串时,按照字符编码来比较,
-
相等操作符
null == undefined 返回为true
有布尔值会先转换为数值 false=>0,true=>1
NaN统一返回false
全等首先判断数据类型
-
语句
forin是遍历对象的一个循环方法
-
label,
使用break跳出多层嵌套循环
https://www.cnblogs.com/hjbky/p/6178625.html
除此之外可以直接通过return 跳出循环函数中argument对象的长度是由传入的参数决定的,而不是由定义函数是的命名参数的个数决定的
-
with
with语句可以有效地将object添加到作用域链的头部,然后执行statement,再把作用域链恢复到原始状态。
-
js函数可以传递任意的参数,arguments的长度取决于传递的参数的个数而不是函数声明的参数
-
js没有不能重载