JavaScript是弱类型语言,弱类型不是没有类型,而是类型之间能够自动去转换,固然你可能会说java数值型也能够自动转换,为何java就是强类型,而js就是弱类型。js能够不一样类型之间进行转换,它的转换能够是须要的时候自动转换或者开发者主动转换。html
html文档解析顺序是从上到下,JavaScript代码做为经过标签嵌入或引入的脚本,也是HTML文档的组成部分。所以,JavaScript代码载入顺序根据脚本标签<script>的出现顺序来肯定的。而且浏览器在加载js时有个特色,那就是载入以后当即就会执行,js的载入会阻塞DOC的创建。java
固然这也会带来问题:因为JavaScript一般须要操做DOM,因此,通常把JavaScript放在</body>前或者文档结尾处引入。若须要在<head>中引入,能够经过修改window.onload或者document.ready事件,强制等到DOM加载完成后再执行相关函数。segmentfault
而且JavaScript执行也是有特殊的顺序:先处理声明后执行。好比代码:浏览器
var a = 1;
function aa() {
}复制代码
会先处理声明:bash
var a = undefined;函数
var aa = {};spa
执行:code
var a = 1;htm
方法调用时候才执行。对象
关于JS阻塞DOM创建能够查看文章segmentfault.com/a/119000001…
在JS中一共有六种数据类型:
基本数据类型(值类型):String 字符串、Number 数值、Boolean 布尔值、Null 空值、Undefined 未定义。
引用数据类型(引用类型):Object 对象。
数据类型之间最大的区别:
基本数据类型:参数赋值的时候,传数值。
引用数据类型:参数赋值的时候,传地址(修改的同一片内存空间)。
tips:不是数字的数字类型NaN。
null专门用来表示空对象。类型是object。
undefined用来表示一个未定义的变量,类型是undefined。
特殊状况:
若是字符串中有非数字的内容,则转换为NaN;
若是字符串是一个空串或者是一个全是空格的字符串,则转换为0;
若是是true 转成 1,若是是false转换成0;
若是是null转换成0;
若是是undefined转换层NaN;
tips:parseInt(变量)返回整数,还有parseFloat(变量)返回浮动数
若是是字符串转boolean:除了空字符串,其他的所有转换成true;
若是是数字转boolean:除了0和NaN,其他的所有转换成true;
若是是null转boolean:转换成false;
若是是undefined转boolean:转换成false;
若是是对象转boolean;转换成true;
tips:浏览器会根据当前的类型自动去转换成须要的类型,好比 if(object),他会把他转换成boolean再去执行,而不是像强类型报错。
运算符都是会返回结果的。运算符能够去分类记忆:算数运算符、自增运算符、逻辑运算符、赋值运算符、关系运算符、三元运算符(条件运算符)
非number与数字进行计算时候都会先转换成数字,在进行运算(任何数和NaN计算结果都是NaN),其他和java同样。
和java同样,再也不赘述。
若是对非布尔值进行逻辑运算,则会先将其转换为布尔值,而后再操做。其他的和java同样。
和java同样,再也不赘述。
若是条件的表达式的求值结果是一个非布尔值,会将其转换为布尔值而后再运算,其他的和java同样。
if语句、switch语句、for语句、while语句语法和java同样,不在赘述。