JavaScript高程读书笔记

第三章
3.6
switch语句
1.与else if 相似,符合即跳出;
 
2.if if if全判断
 
3.7
1.return代表结束,return后的语句不执行
 
2.arguments[0]代表空函数sayHi( )第一个参数的值,又sayHi(12){alert(arguments.length)}    //1
 
3.arguements永远与对应的值同步,例如sayHi(1,2)那么arguements[0]=1
 
4.严格模式下,arguements 无效
 
5.JavaScript不存在函数签名所以,没有重载
 
6.基本类型包括:undefined/null/string/Boolean/number(栈内存)占据空间
   引用类型:object(堆内存)指针
 
 
第四章、变量,作用域和内存问题
4.1
1.不能给基本类型增加属性
     var name="baby";
     name.age=27;
     alert(name.age);    //undefined
 
   可以给引用类型增加属性
     var name=new Object( );
     name.age=27;
     alert(name.age);    //27
 
2.复制
   基本类型复制:实质是创造一个副本。
   引用类型复制:实质是创造一个副本指针,指向某个对象。
 
3.所有函数的参数是按值传递的,而不是按引用传递。
   因为访问变量有按值和按引用两种方式,而参数只能按值传递。
 
4.数据类型检测:基本类型用 typeof,引用类型用 instanceof 
 
5.作用链的作用:保证对执行还境有权访问的所有变量和函数的有序访。
                       全局执行环境的变量对象始终是作用域链的最后一个对象。
 
4.2
 
1.JavaScript没有块级作用域。
 
2.作用域分界线:function();
   开辟作用域:with / try / catch;
 
3.ES6新增块级作用域:let,concat
   var存在变量提升,而let没有。
 
4.执行环境:某个执行环境执行完,就被销毁,包括其中的变量和函数,而全局执行环境知道应用退出或者浏览器关闭时销毁。
 
4.3
1.垃圾回收方式:标记清除 和 引用计数
 
第五章
5.1object类型
1.object类型有两种:new object()构造函数 和 var name = { json }
 
5.2 array类型
1.object类型有两种:同上
 
2.数组从0开始,index也是从0开始
 
3.length能用于限制长度,从而使得之后的值undefined
 
4.所有对象都具有:totoLacalString( ),toString( )和value( )方法。
 
5栈方法 push( ) , pop( ),后进先出,如阶乘递归,从后插入
 
6.队列方法 shift() unshift(),先进先出,从前插入
 
7.重排序方法 reserse() sort()如果是英文,则比较首字母的顺序
  
 function compare(a,b){
     return  b-a;
}
 
8.操作方法 concat()slice()splice()
    .concat("",[ ])先复制数组,然后把新的内容插入到副本最后,不影响原数组;
    .slice( 起始位置,[ 结束位置,不包含自身 ] )返回的是原数组某个范围的项,不影响原数组;
    .splice()方法始终返回一个数组,即移除项或者替换项,
     删除  .splice(起始位置,要删除的项数)
     插入  .splice(起始位置,要删除的项数 ,插入的内容)
     替换  .splice(位置,要删除的项数 ,插入的内容)
 
9.位置方法 indexOf(查找项,起始位置) lastIndexOf(查找项,起始位置 )
   查找项要求严格相等,返回索引值。
   0开始,不存在返回-1;
 
10.迭代方法  :  every(function,[ 作用域对象 ])some()   foreach()map()  filter()
     每个方法接受两个参数。
     function( 数组项的值,index,数组本身)
     every()要求数组所有项满足函数条件,返回Boolean
     some()要求部分项满足函数条件,返回Boolean
 
     filter()返回满足条件项的值,用于查询某些项是否存在
 
     foreach()只是对数组每项传入一个函数方法并执行,没返回值,类似for循环
     和foreach()不同的是map()执行函数并返回数组。
 
11.归并方法 reduce(function,[ value ])reduceRight()
          
            var num=[1,2,3,4,5];
            var sum=reduce ( function ( prev , cur , index , array ){
                    return prev+cur;
            });
            alert(sum);  //15
 
 
5.5  function类型
1、定义函数的方法:①function name(){} ,
                          ②var name=function(){};  ,
                          ③var name=new Function(){}
 
函数是对象,函数名是指针。
 function A(function B,传给前面function的参数)
 
2、函数内部属性包含两个特殊对象:arguements 和 this
     
     arguments:
    
     function A(a){
     arguments.callee(a-1);
     }
 
     arguments.callee指向的是function A
      
     经典的递归
     
     function plus(num){
          if(num=1){
                  return 1;
          }else{
                  return num*plus(num-1);
                  }
     }
 
     this: P115
     caller:
     
function outer(){
    inner();
}
function inner(){
    alert(inner.caller);
}
outer();   // function outer
 
 
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/yzhweb/p/7511135.html