JavaScript基础(3)

1. JavaScript函数声明方式

    * 函数声明方式声明的函数会被解析器通过函数声明提升的过程即function declaration hoisting置于原代码数的顶部,所以即使在函数前调用该函数也可以正常使用;
    * 而函数表达式方式除了不能在声明前调用外,与函数声明方式一样;
    * 函数对象方法可以直观地理解“函数是对象,函数名是指针”这个概念,但是它会造成解析器两次解析,一次是普通的ECMAScript代码,一次是解析传入Function构造函数里的字符串,会影响js引擎性能。
2. 弱类型语言,隐式转换

    * 加“”都成字符串类型,表达式默认从左向右计算,与字符串做“+”运算都成字符串。
    * var  a=true;var b=false; alert('a+b='+(a+b));  =1
3. 强制转换:
4. prompt:获得输入数据;计算结果为NaN(不是数字的数字类型):参数有错误;除数为0:infinity(number类型);0/0:非数;:与“+”运算相反。
5. undefined是继承null;undefined针对数据变量,null针对引用变量。严格相等===。

    * undefined==null-》true,undefined类型undefined,typeof(null)是object。
6. 关系运算中:字符串和数字比,字符串(NaN)转为数字,NaN>任意数字->false;isNaN()
7. document.write():打破网页正常输出流。
8. if语句

    * * Null总是为假(false)
    * * Undefined总是为假(false)
    * * Number+0,-0 或是 NaN 的时候为假,其它值为真
    * * String空字符串的时候为假,其它值为真
    * * Object总是为真(true)
9. 作用域

    * 全局、局部(函数)
    * JavaScript没有块级作用域:if(....){var a=1}console.log(a)
    * JavaScript一切赋值都是值传递。
    * 
10. 对多字节和非法字符进行单字节编码(encodeurl)。对双字节、单字节非法字符(URL规定参数值中再次出现保留字为非法,比如?:/ $)编码:encodeurlcomponent

    * utf-8:汉字占三字符,字母、数字单字节;Unicode:都是双字节
11. eval(string):可计算某个字符串,并执行其中的的 JavaScript 代码。
12. 数组(获取数组元素记得强转)

    * JavaScript同一数组不限制元素个数,不限制元素的数据类型(获取数组元素记得强转)。
    * 是引用类型的对象,原始类型(数据保存在本地变量)只能保存一个数据,引用类型(数据保存在“堆”,由堆指向实际数据)保存一组数据,实际情况描述一个对象(物体),单一属性是不够的。
    * var week=[];
    * 凡是存储在堆中的都是对象。
    * 直接可以输出数组,默认使用逗号隔开。
    * 使用引用类型的对象(变量):变量-》对象地址-》对象本身
    * new Array(num):在堆中创建;Array是ecmascript内置类型(实际开发中不使用)。
    * 何时使用null?主动释放对象,被释放后就找不回了。undefined:初始化未赋值的变量。
    * 
    * 通过length扩容,缩容(截断,被截断的元素还占用存储空间,但是找不回了,也不能被释放回收,还属于原数组对象当中,垃圾回收不能只回收数组的部分元素,需跟整个原数组一起回收)。
    * arr[arr.length]=新值
    * toFixed()和toPrecision():0.1+0.2等于0.30000000000000004。JavaScript的数字都遵循IEEE 754标准构建,在内部都是64位浮点小数表示。
    * hasOwnProperty(name)
    * 如果数组是稀疏的,那么这个数组中至少有一个以上的位置不存在元素(包括 undefined )。
    * 类数组:http://www.cnblogs.com/guorange/p/6668440.html

猜你喜欢

转载自blog.csdn.net/bengxu/article/details/80209065
今日推荐