zoukankan      html  css  js  c++  java
  • js读书笔记

    js读书笔记

    基本类型的基本函数总结

    1、 Boolean()

    数据类型 转换为true的值 转换为false的值
    Boolean true false
    String 任何非空字符串 “”(空字符串)
    Number 任何非零数值(包括无穷大) 0和NaN
    Object 任何对象 null
    Undefined n/a undefined

    2、 Number():可以用于任何数据类型

    数据类型 返回值
    true or false 1和0
    数字值 简单传入和返回
    null 0
    undefined NaN
    字符串
    对象 a、调用对象valueOf()方法后按上述规则转换;b、若转换结果为NaN,则调用toString()方法后再按上述规则转换

    3、parseInt()和parseFloat():专用于字符串

    4、 toString():字符串转换函数,null和undefined无此方法

    5、 String():字符串转换函数,对null返回“null”,undefined返回“undefined”

    • valueOf()-》toString()-》Number():一元操作符、一元加和减操作符、乘性操作符、减性操作符、有一个操作数是数值,一个操作数是非数值非字符串(对象、布尔值)的加性操作符
    • toString():有一个操作数是字符串,一个操作数是非数值(字符串、对象、布尔值)的加性操作符
    • String():有undefined和null的加性操作符

    语句

    1. for-in语句:循环输出的属性名顺序不可预测;先检测null与undefined
    2. label标签,少用
    3. with:将代码的作用域设置到一个特定的对象中,严格模式下不许使用。eg,
        with(location){
            var qs = search.substring(1);
            var hostName = hostname;
            var url = href;
        }
    

    等价于:

            var qs = location.search.substring(1);
            var hostName = location.hostname;
            var url = location.href;
    
    1. switch语句中比较值时用的是全等操作符

    理解函数参数

    1. 函数体内有arguments对象可以访问参数数组。
    2. arguments的值永远与对应命名参数的值保持同步。arguments与命名参数的内存空间独立。
    3. 没有传递值得命名参数将自动被赋予undefined值。
    4. 由于未规定函数参数的数量和类型,故不可以重载

    基本类型和引用类型的值

    基本类型值:undefined、null、boolean、number、string。按值访问,可以操作保存在变量中的实际值,在内存中占据固定大小的空间,因此被保存在栈内存中

    引用类型值:由多个值构成的对象。保存在堆内存中,按引用访问。

    Object类型:

    创建Object实例方式:

    1. 试用new操作符后跟Object构造函数:
        var person = new Object();
        person.name = "Nicholas";
        person.age = 29;
    
    1. 对象字面量表示法:对象定义的一种简写形式,不会调用Object构造函数
        var person =  {
            name : "Nicholas",
            age : 29
        };
    

    对象属性访问:可使用方括号访问,方便属性为变量,或者属性名中包含空格等字符

        alert(person.name);
        alert(person["name"]);
        
        var propertyName = "name";
        alert(person[propertyName]);
        
        person["first name"] = "Nicholas";
    

    Array类型:

    有序列表,可保存不同类型值,可以动态调整大小

    创建数组基本方式:

    1. 构造函数
        var colors = new Array();
        var colors = new Array(20);
        var colors = new Array(3);//创建一个包含3项的数组
        var names = new Array("Greg");//创建一个包含1项字符串的数组
        var colors = Array(3);//可省略new操作符
    
    1. 数组字面量表示法:不会调用Array构造函数
        var colors = ["red", "blue","green"];
        var names =[];
        var values =[1,2];
        colors[1] = "black";//用方括号读取数组值
        colors[3]="white";//当索引超过现有长度时,数组自动增加其长度
    

    循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate).

    表示“重复”这个含义的词有很多, 比如循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate).

    循环

    算是最基础的概念, 凡是重复执行一段代码, 都可以称之为循环. 大部分的递归, 遍历, 迭代, 都是循环.

    递归

    定义是,根据一种(几种)基本情况定义的算法,其他复杂情况都可以被逐步还原为基本情况.在编程中的特征就是, 在函数定义内重复调用该函数.
    例如斐波那契数列, 定义F(0)=1, F(1)=1, 所有其他情况:F(x)=F(x-1)+F(x-2).所有大于1的整数经过有限次的反推之后都可以转换到两种基本情况. 而在编程中, 算法则是这样的:

    int F(x)
    {
        if(x==0 || x==1)
            return 1;    //这里是退出递归的条件, 以保证在有限次递归后能够得到结果
        return F(x-1)+F(x-2);    //转化为更为基本的情况, 重复调用自身进行计算
    }
    

    迭代

    在数学和编程中有不同的含义. 迭代(数学): 在循环的基础上, 每一次循环, 都比上一次更为接近结果.
    例如下面是一个迭代的例子.

    int result = 0;
    for(int i=0; i<10; i++)
        result += i;    //每一次循环之后, result都更加接近结果45
    

    有很多数学问题, 都是迭代算法, 如牛顿迭代法(求平方根).

    迭代(编程): 按顺序访问一个列表中的每一项, 在很多编程语言中表现为foreach语句:

    $arr = [1, 2, 3, 4];
    foreach($arr as $i)
        echo $i;
    

    遍历:

    按一定规则访问一个非线性的结构中的每一项, 强调非线性结构(树, 图). 而迭代一般适用于线性结构(数组, 队列).

    结论

    • 循环(loop) - 最基础的概念, 所有重复的行为
    • 递归(recursion) - 在函数内调用自身, 将复杂情况逐步转化成基本情况
    • (数学)迭代(iterate) - 在多次循环中逐步接近结果
    • (编程)迭代(iterate) - 按顺序访问线性结构中的每一项
    • 遍历(traversal) - 按规则访问非线性结构中的每一项

    这些概念都表示“重复”的含义, 彼此互相交叉, 在上下文清晰的情况下, 不必做过于细致的区分.

    Date类型

    创建方法:

    • 使用new操作符和Date构造函数
    var someDate = new Date("May 25,2016");//会自动调用函数Date.parse()
    

    其他函数:

    • Date.parse("May 25,2016");
    • Date.UTC(2016,4,25,0,0,0);
    • Date.now() //+ new Date()
    • Date.toLocaleString()
    • Date.toString()
    • Date.valueof()

    RegExp类型

    创建方法:

    • 字面量方法:
    var expression = / pattern / flags;
    

    pattern为正则表达式,每个正则表达式都可带一个或多个flags,用以标明正则表达式的行为,flags的可选值有:g(全局),i(不区分大小写),m(多行模式),eg:

        var pattern1 = /[bc]at/i;
        var pattern3 = /.at/gi;
    
    • 使用构造函数创建
        var pattern2 = new RegExp("[bc]at","i");
    

    Function类型:

    函数是对象,函数名是一个指向函数对象的指针,不会与某个函数绑定。

        1. function sum(num1,num2){
            return num1 + num2;
        }
        2. var sum = function(num1,num2){
            return num1 + num2;
        }; //函数表达式定义法,function关键字后没有函数名,因为可通过变量sum引用,另注意函数末尾有个分号
        3. 使用构造函数定义
         var sum = new Function ("num1","num2","return num1 + num2");
  • 相关阅读:
    D. Constructing the Array
    B. Navigation System
    B. Dreamoon Likes Sequences
    A. Linova and Kingdom
    G. Special Permutation
    B. Xenia and Colorful Gems
    Firetrucks Are Red
    java getInstance()的使用
    java 静态代理和动态代理
    java 类加载机制和反射机制
  • 原文地址:https://www.cnblogs.com/suntingme/p/5395619.html
Copyright © 2011-2022 走看看