2017年3月30日 19:15:00
变量
程序都是在内存中运行;
只要在程序中临时存储诗句,都要放在变量中
任何程序都是IPO:Input Process Output 读取,处理,存储 数据 数据 数据
声明:在内存中开辟一个存储空间
常亮:一旦创建,值不可改变的特殊变量
const pi = 3.1415926; 定义一个常量
JS是弱类型:变量本身没有类型,只有变量中的值才有数据类型;
弱类型:1.变量声明时不需声明数据类型,
今后可能保存任何类型数据;
2.数据类型见可以自动类型转换
原始类型:数据保存在变量本地!
< ================================================== >
Number类型:表示一切用于比较或数据计算的数字;
字符串类型,一般不要改变,如果改变就创建新字符串,抛弃旧字符串
数据类型转换-->
隐式转换:程序自动转换数据类型;
+:只要有字符串参与,最终结果一定是字符串;哪怕是字符串+true/false,就是'stringtrue';
如果没有字符串,一切都为数字计算;true-->1;false-->0
强制转换:调用程序的函数手动转换类型
str.toString();------> 变量.toString();
< ======================== >
Numner(xy); ---->转Number类型;
< ======================== >
patseInt(‘666’); --->转整数类型;
例:var num = parseInt("str");
从第一个字符向后读,如果获取数据就往后读取,
如果第一个字符不是数据,就说明不能转--->NaN;
如果第一个是空格,忽略;
NaN: Not a Nunber;
只能读取整数parseInt("22.5"); ---> 22
如果字符串为空,则返回NaN;
< ======================== >
parseFloat("222.2222") ----> 转小数类型
用法和parseInt 一样,区别就是它能读出小数点;
但是只能读取一个小数点,如果是2.2.2.2;---->2.2
如果是.55;那么JS会默认为前面有一个0---->0.55;
如果是'222.0';那么parseFloat也会知道这是个整数---> 222;
/* ================== */
凡是通过页面获得的数据,都是字符串,必须先转换再计算;
/* ================== */
只要比较不确定的类型,又不希望自动类型转换时,就用===
NaN和任何数字做比较,永远返回false;
isNaN(x):这是一个方法,用于判断一个数组是否为NaN;
如果是NaN返回true,不是则返回false;
如果是数字返回false,如果不是数字返回true;
alert(isNaN('')); false 是数字,在比较运算符会自动类型转换,结果转换为0;
结论是在isNaN 中,能自动转换为数字的,结果都是false,如果不能自动转换为数字,都返回false;
isNaN(NaN);返回true ,JS isNaN 设计的本意就是用来判断是不是non a number 的,所以肯定是true;
**作用域:一个变量的可用范围!**
函数作用域:也叫局部作用域:声明在方法内部的变量或方法的参数变量都叫局部变量;
全局作用域:直接声明在全局作用域中的变量,叫全局变量,
window对象:是整个网页的全局作用域对象;
值传递:将一个变量的值赋值给另一个变量,其实将原变量中的值,复制一份给新变量;
注意:对为声明的变量赋值:JS会自动在全局创建该变量!
!!!!!!!!!!!!!!!极力不推荐;
null:一个对象没有指向任何数据;
何时使用null:主动释放对象!主动释放的对象不能被找回;
**垃圾回收:js引擎自动销毁不再被引用的对象!**
垃圾回收程序:随JS程序运行而后台同时运行!
相当于饭店吃饭,服务员会在你吃饭之后回收!;
@@@@@@@@@@@@
引用类型:都在存储在堆里面,对应的一个值映射到栈里面
用的时候对应栈里面去找;
重新赋值:将新对象地址保存到原变量地址中替换地址,旧地址释放,等待垃圾回收;
全局变量的生命周期和网页的生命周期一样;
局部变量的生命周期和当前作用域环境栈有关,作用域创建,局部变量一同创建,作用域结束,局部变量一同消失;
@@@@@@@@@@@@@@@@@@@@@
冒泡排序:从第一个开始,从小到大排序,小数放前,大数放后;
var arr = [1,5,2,74,9,5,1,845,123,4];
for(var i = 0;i