• js-20170606-数据类型


    JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。ES6 又新增了第七种 Symbol 类型的值
    JavaScript有三种方法,可以确定一个值到底是什么类型。
     
    1.布尔值 (下面六个值被转为false 其他都转化成true)
    需要特别注意的是,空数组([])和空对象({})对应的布尔值,都是true。
     
    2.数值
    由于浮点数不是精确的值,所以涉及小数的比较和运算要特别小心。
    parseInt() 、 Number()、parseFloat()
     
    3.字符串
    字符串可以被视为字符数组,因此可以使用数组的方括号运算符,用来返回某个位置的字符(位置编号从0开始)
     
    var s = 'hello'; s[0] // "h" s[1] // "e" s[4] // "o" // 直接对字符串使用方括号运算符 'hello'[1] // "e"
     
    4.对象
    检查变量是否声明
    if ('a' in window) {
    // 变量 a 声明过
    } else {
    // 变量 a 未声明
    }
    查看所有属性
    使用Object.keys方法
    var o = {
    key1: 1,
    key2: 2
    };
    Object.keys(o);
    // ['key1', 'key2']
    in运算符
    in运算符用于检查对象是否包含某个属性(注意,检查的是键名,不是键值),如果包含就返回true,否则返回false;
    在JavaScript语言中,所有全局变量都是顶层对象(浏览器的顶层对象就是window对象)的属性,因此可以用in运算符判断,一个全局变量是否存在。
    for…in循环
    for...in循环有两个使用注意点。
     
    如果只想遍历对象本身的属性,可以使用hasOwnProperty方法,在循环内部判断一下是不是自身的属性。
    5.数组
    本质上,数组属于一种特殊的对象。typeof运算符会返回数组的类型是object。
    数组的length属性是可写的。如果人为设置一个小于当前成员个数的值,该数组的成员会自动减少到length设置的值。
    var arr = [ 'a', 'b', 'c' ];
    arr.length // 3
    arr.length = 2;
    arr // ["a", "b"]
    将数组清空的一个有效方法,就是将length属性设为0。
    var arr = [ 'a', 'b', 'c' ];
    arr.length = 0;
    arr // []
    in 运算符
    检查某个键名是否存在的运算符in,适用于对象,也适用于数组。
    var arr = [ 'a', 'b', 'c' ];
    2 in arr // true
    '2' in arr // true
    4 in arr // false
    使用delete命令删除一个数组成员,会形成空位,并且不会影响length属性。
    var a = [1, 2, 3];
    delete a[1];
     
    a[1] // undefined
    a.length // 3
     
    6.函数
    JavaScript有三种方法,可以声明一个函数。
    (1)function命令
    function print(s) {
    console.log(s);
    }
    (2)函数表达式
    var print = function(s) {
    console.log(s);
    };
    这种写法将一个匿名函数赋值给变量。这时,这个匿名函数又称函数表达式(Function Expression),因为赋值语句的等号右侧只能放表达式。
     
    采用函数表达式声明函数时,function命令后面不带有函数名。如果加上函数名,该函数名只在函数体内部有效,在函数体外部无效。
    (3)Function构造函数(几乎不使用)
    var add = new Function(
    'x',
    'y',
    'return x + y'
    );
     
    // 等同于
     
    function add(x, y) {
    return x + y;
    }
    Function构造函数,除了最后一个参数是函数的“函数体”,其他参数都是函数的参数。
    这种声明函数的方式非常不直观,几乎无人使用。
    函数可以调用自身,这就是递归
    如果同时采用function命令和赋值语句声明同一个函数,最后总是采用赋值语句的定义。
    不能在条件语句中声明函数
    length属性
    length属性返回函数预期传入的参数个数,即函数定义之中的参数个数。
    toString()
    函数的toString方法返回函数的源码。
    函数作用域
    在函数外部声明的变量就是全局变量(global variable),它可以在函数内部读取。
    var v = 1;
    function f(){
    console.log(v);
    }
    f() // 1
    在函数内部定义的变量,外部无法读取,称为“局部变量”
    function f(){
    var v = 1;
    }
    v // ReferenceError: v is not defined
    对于var命令来说,局部变量只能在函数内部声明,在其他区块中声明,一律都是全局变量。
    if (true) {
    var x = 5;
    }
    console.log(x); // 5
    函数本身的作用域
    函数本身也是一个值,也有自己的作用域。它的作用域与变量一样,就是其声明时所在的作用域,与其运行时所在的作用域无关。
    参数
    参数传递方式:函数参数如果是原始类型的值(数值、字符串、布尔值),传递方式是传值传递(passes by value)。这意味着,在函数体内修改参数值,不会影响到函数外部。
     
     
     
     
     
     
     
     
     
     
    如果函数参数是复合类型的值(数组、对象、其他函数),传递方式是传址传递(pass by reference)。也就是说,传入函数的原始值的地址,因此在函数内部修改参数,将会影响到原始值。
    注意,如果函数内部修改的,不是参数对象的某个属性,而是替换掉整个参数,这时不会影响到原始值。
     
     
     
     
     
     
     
     
     
     
    arguments对象
    arguments对象包含了函数运行时的所有参数
  • 相关阅读:
    parallel-fastq-dump是一个大坑
    生信软件安装(2)
    2018年一些感悟
    raw data/PF data/Q30 data/clean data的不同
    专题
    结构体
    指针和数组
    指针
    函数的声明
    C语言中的函数
  • 原文地址:https://www.cnblogs.com/jialuchun/p/7281466.html
Copyright © 2020-2023  润新知