您的位置:首页 > Web前端 > JavaScript

JS学习笔记

2016-05-03 17:19 190 查看
变量命名规则:

 1 开头字母数字 “_”or "$"

 2 变量名不允许空格

 3 不能使用脚本语言中保留的关键字及保留符号作为变量名

 4 变量名区分大小写(javascript是区分大小写的语言)
全局变量

 方法外部声明

 方法内部 没有加var关键字(必须执行过该方法)

局部变量

 方法内部 使用var声明

数据类型:
基本数据:(Number Boolean String Undefined Null)

 -Number:整数和小数、NaN、Infinty、-Infinty

    注意:

             1 除10进制还可以通过8进制和16进制表示

             2 小数为浮点类型,最高精度为17位

                 if(a+b == 0.3)//不要这样测试

                 因为浮点数值最高精度17位,而是

                 0.30000000000000000004.

 -Undifined 声明未赋值

 -Null空值

 -String 字符

 -Boolean 布尔

引用数据类型:

  Object类型(数组、对象、日期)

关键字

typeof操作符 判断数据类型

运算符:

==判断数值是否相等

=== 首先判断数值,其次判断类型

函数可以当成一种数据类型function

所以可以作为一个参数传入到函数中

三种定义函数的方式:

1 function语句形式

2 函数直接量形式

3 通过function构造函数形式定义函数

区别:
解释时机:

    优先解释function语句形式其他两种顺序执行解释
性质:

    function语句以及函数直接量都相当于静态,只执行一次

    构造函数定义形式动态,每次都执行
作用域

    function语句以及函数直接量具有函数的作用域

    构造函数定义形式具有顶级作用域,方法体内使用的变量必须是全局变量不能是局部

函数参数:

    js中函数形参和实参数量多少可以不相等。参数比较的松散
    实参:实际传入的参数,可以通过arguments.length,arguments[0]获取,只能在函数内部访问
    形参:方法内定义传入的参数,可以通过方法名.length获得,或者推荐的arguments.callee.length

        

    检查实参和形参个数是否相等

    if(arguments.callee.length == arguments.length)

    arguments.callee相当于函数自己本身

    常用于递归调用

this:

    指在运行时期基于执行环境所绑定的

    this总是指向调用者windows.test()----this.k=20-----window.k=20

call apply:

    1 绑定函数用于传递参数,调用

    2 扩充作用域,好处就是参数和方法之间无耦合

执行环境、作用域链:

尽量减少全局的变量,因为它查找变量是从最小找到最大作用域,如果定义的变量在最大作用域内遍历的层级会增加,效率较低。

垃圾收集

标记法 技术法

边际变量的不同状态,收集,方法执行完毕,方法内变量进行回收

块级作用域


javascript没有块级作用域的概念!

只有垃圾回收机制,如果垃圾回收了,那么变量就无法找到,

没有回收,在方法体内变量都可以共用的,

function(){

    for(int i=0; i<5; i++){

        alert(i);

    }

    alert(i);//6 此时可以找到

}

匿名执行作用域


可以单独提出一块作用域,与外部代码无任何关联,使用()();()代表执行

(function(){

    alert('i can execute directly!');

})();

闭包

一个函数可以访问另外一个函数作用域中的变量

好处:封闭性-起到一个保护变量的作用,不被垃圾回收
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: