1.javascript中,值包括原始值对象,原始值包括布尔值、数字、字符串、null和undefined,其他的值为对象。

原始值的特点:(1)按值进行比较:3===3> true; 'abc'==='abc'> true

(2)属性不能改变、添加和移除  var src='abc'; str.length=1; str.length> 3   str.foo=3; str.foo> undefined

对象:包括简单对象、数组、正则表达式,特点:(1)按引用进行比较 {}==={}> false      var obj1={}; var obj2=obj1; obj1===obj2> true

(2)属性可以自由被改变、添加和移除  var obj={}; obj.foo=123; obj.foo> 123

2. undefined:没有值,未被初始化的变量即为undefined,丢失的参数,访问不存在的属性

null:没有对象,表示空值

undefined和null没有属性,也没有方法, 可被看做false

3. 对值分类:typeof和instanceof

typeof主要用于原始值,instanceof主要用于对象

typeof undefined> 'undefined'  typeof null> object ,但是null不是一个对象

null instanceof object> false   undefined insteanceoof object> false

4. 被解释为false的值:undefined、null、false、0、NaN、'' ,其他值被解释为true

5. &&:可以返回布尔值,也可为其他值,如果第一个运算数是的,返回它,否则返回第二个运算数 NaN&&'abc'> NaN  123&&'abc'> 'abc'

||: 可以返回布尔值,也可为其他值,如果第一个运算数是的,返回它,否则返回第二个运算数 'abc'||123> 'abc'  ''||123> 123

6. 所有的数字都是浮点数 1===1.0> true, 还有特殊的数字:NaN,Infinity, Infinity比任何数字大(除了NaN),-Infinity比任何数小(除了NaN)

7. 函数声明具有提升特性—它们的实体会被移动到所在作用域的开始处。这使得我们可以引用后面声明的函数。

  function foo(){

                    bar();  //Ok

                   function bar(){

                            }

            }

注意,var 声明赋值不具备该特性,

               function foo(){

                          bar(); //Not OK

                          var bar=function(){

                                   }

                      }

8. 函数内的arguments不是数组,只是类似数组,有length属性,可以通过[]访问每个参数,但是不能对它调用数组的方法, 可以通过toArray()方法将它变为数组

9.  一个变量的作用域总是完整的函数:

 function foo(){
var x=-1;
if(x<0)
{
var tmp=-x;
}
console.log(tmp); //
}

10. 所有的变量声明都会被提升,声明会被移动到函数的开始处,而赋值还在原来的位置进行

function foo(){

  console.log(tmp);// undefined

  if(false)
{
var tmp=3;
}
}

11. 闭包:每个函数和它周围的变量保持着连接,哪怕离开被创建时的作用域也是如此。函数以及它所连接的周围作用域中的变量即为闭包。

function foo(s){
return function(){
s++;
return s;
}
} var inc=foo(5);
inc();//
inc();//
inc();//

12.  IIFE模式(立即调用表达式):引入新的作用域 , 防止一个变量变成全局变量

(function(){   //开启IIFE

     var tmp=...;// 非全局变量

}());

用例:解决闭包造成的无意共享

result=[];
for(var i=0;i<5;i++)
{
(function(){
var i2=i; //复制i
result.push(function(){ return i2}); }();) } console.log(result[1]());//
console.log(result[3]());//

13. 两种面向对象机制:单一对象和构造函数

对象可以认为是一组属性的集合,使用in 运算符检查属性是否存在,使用delete运算符移除属性

任意属性名:使用引号括起来,用方括号获取和设置

var obj={'not a identifier': 123};

>obj['not a identifier']
123
>obj['not a identifier']=456; //方括号可以动态计算
>obj['not a'+'identifier']
123

14. var func2=obj.func.bind(obj);  //使用bind()方法提取一个对象中的方法

JavaScript 学习笔记(一)的更多相关文章

  1. Java程序猿的JavaScript学习笔记(汇总文件夹)

    最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...

  2. Java程序猿的JavaScript学习笔记(8——jQuery选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  3. Java程序猿JavaScript学习笔记(2——复制和继承财产)

    计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...

  4. Java程序猿的JavaScript学习笔记(3——this/call/apply)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  5. Java程序猿JavaScript学习笔记(4——关闭/getter/setter)

    计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...

  6. Java程序猿JavaScript学习笔记(14——扩大jQuery UI)

    计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...

  7. javascript学习笔记(四) Number 数字类型

    数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数  toExponential() 方法 用科学 ...

  8. JavaScript学习笔记之数组(二)

    JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...

  9. JavaScript学习笔记[0]

    JavaScript学习笔记[0] 使用的是廖雪峰JavaScript教程. 数据类型 Number 表示数字,不区分浮点整形. === 比较时不转化数据类型. == 反之. NaN与任何值都不想等, ...

  10. Java程序猿的JavaScript学习笔记(1——理念)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

随机推荐

  1. NGUI 使用EventDelegate.Add与UIInput.onSubmit、UIInput.onChange限定编辑框中的内容

    Unity中,使用NGUI,通常为某个控件(如按钮)绑定事件(单击.双击.拖拽.滚轮.选择等)都是用UIEventListener,比如: public void Bind() { UIEventLi ...

  2. getElementByName()和getElementById的区别

    因为在属性中,id时唯一的,getElementById取出的是一个元素但是可以出现相同的name,取到的是一个Array ,getElementsByName取出的是数组 记录代码如下: <! ...

  3. 这有一个flag

    1.并查集[1224] 2.最小生成树?? 3.topsort(好洋气): 4.归并排序[1438]: 5.差分约束系统: 6.A*算法找k短路 7.scanf: 8.搜索[P1198]华容道: 9. ...

  4. Oracle 表空间联机(online)与脱机(offline)

    数据库管理员可以在数据库处于开启(open)状态时令除 SYSTEM 表空间(tablespace)之外的任何表空间联机(online)(可访问)或脱机(offline)(不可访问).SYSTEM 表 ...

  5. B-tree

    2-3 Tree 二叉搜索树的每个节点只带有一个值,这个值将数据区间划分成两部分,值左边的部分(也就是小于这个值的数据)保存到节点的左子树,值右边的部分保存到节点的右子树.因此,每个非叶子节最多能够拥 ...

  6. CentOS下MySQL数据库安装

    前辈们总是说,要边学边记录,要总结.所以,开始把每天学到的内容一点一点记录. 复杂的理论不懂,只会目前安装,安好后就开始玩咯! 1.在官网下载相应的rpm安装包 下载地址:http://dev.mys ...

  7. python学习之路-day6-面向对象

    一.面向对象学习 特性 class类 一个类即是对一类拥有相同属性的对象的抽象.蓝图.原型.在类中定义了这些对象的都具备的属性.共同的方法. 面向过程编程和面向对象编程: 面向过程编程:使用一系列的指 ...

  8. 游标的使用之压缩数据库Log文件

    declare @databasename nvarchar(100)--定义游标以及赋值 获取所有Online的Database Namedeclare getDataBaseCursor  cur ...

  9. kendo chart label position 图表的值标签位置及显示模板

    1.不显示0 seriesDefaults: { type: "column", labels: { visible: true, position:'' background: ...

  10. 第三次作业——《K米评测》

    第三次作业--<K米评测> 一.调研.评测 上手体验 APP的图标做的不错,一眼就知道和KTV唱歌相关的 点进去就是连接包箱的界面和直播界面,把软件最重要的两个功能展示出来了,一目了然 热 ...