<script>
的属性:
type
src
charset
async = “async”异步,下载完后立即执行(可以省略但是不建议省略)
defer =”defer”异步,下载完没有立即执行,等到页面的所有代码都加载完解析和现实后开始执行
变量声明:
可以直接不声明直接赋值使用:a = 100;
建议使用:var a = 100;
(声明后存放到内存的栈中,js不可以直接操作内存地址,有别于c)
数据类型:
简单类型:
Number、String、Boolean、Null、Undifined//声明变量戴氏为赋值
复杂(引用)类型:
Object、Array、Date等
查看当前变量的数据类型:
typeof (name) 或者 typeof name
字面量:(弱语言脚本语言多用的逆推方法:鸭子理论[他的叫声像鸭子就可以说他是鸭子])我们js没有复杂的数据类型进行初始化,我们给其赋值时的数据类型便决定了其数据的类型。
注意:不要判断两个浮点数是否相等,var reasult = 0.1 + 0.2 //这个值不是0.3 而是0.300000000000000004 永远都不会与0.3相等 0.07*100 的结果为7.00000000000001
转换成整数进行比较
数值范围
内存是有限的:
最小值Number.MIN_VALUE = 5e-324
最大值Number.Max_value=1.7976031348623157e+308
无穷大: Infinity
无穷小: -Infinity
数值检测:
NaN非数值(Not a Number)
consloe.log(parseInt("abc"));//打印NaN
consloe.log("abc"/10);//打印NaN
isNaN()//判断是非为数字
字符串可以是“”也可以是‘ ’
获取字符串的长度为.length
console.log("\"abc\"");//输出"abc"
字符串是不可变的
var str = "hello";
str = str + "world";
console.log(str);
//打印的是helloworld 但是不是同一个栈地址,地址并没有被重用,而是新开辟了一块内存区域将str现在的值方了进去,原来的str的内存由于没有被访问的机会,而被垃圾回收机制回收内存空间(回收时间不确定)
str = '';
for(var i=0; i<10000; i++){
str +=i;
}
//内存大量无意义的消耗,而且循环之中垃圾回收是没有执行的(解决方案数组array)
Boolean类型的字面量只有两个,但是js的所有类型都可以与这个Boolean类型有等价的值
var reasult = Boolean("a");//true
var reasult = Boolean(100);//true
var message = 100;
if(message){}//if会帮我们进行好转换
转换为false的:
空字符串、0、NaN、null、undefined(共同特点是没有具体的值)
//使用if直接判断是否为空值
var a = "abc"
if(a){
}else{
}