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");
  • 相关阅读:
    【Swift】UILabel 设置内边距
    Swift泛型定义 同时限定T的类(class)和多协议(protocol)
    Flutter如何引用第三方库并使用
    Swift
    【iOS】Swift4.0 GCD的使用笔记
    swift中数据之间的转换
    Python之路【第五篇】:面向对象及相关
    rabbitmq pika connection closed
    python
    rabbitMQ实战(一)---------使用pika库实现hello world
  • 原文地址:https://www.cnblogs.com/suntingme/p/5395619.html
Copyright © 2011-2022 走看看