zoukankan      html  css  js  c++  java
  • JavaScript数据类型

    变量提升:先获取变量再执行
    标签:label
    可以用于跳出代码块

    foo: {
      console.log(1);
      break foo;
      console.log('本行不会输出');
    }
    console.log(2);
    // 1
    // 2
    

    typeof 运算符 确定变量类型

    typeof window
    typeof {}
    typeof []
    typeof null 
    

    以上都是Object类型

    null表示一个空对象,转为数值为0
    undefined是一个表示 此处无定义的原始值 转为数值为NaN
    undefined,null,false,0,NaN,""或''都为false, 其他为true

    NaN的数据类型依然属于Number,NaN不等于任何值,包括它本身
    Infinity大于一切数值(除了NaN),-Infinity小于一切数值(除了NaN)
    Infinity与NaN比较,总是返回false。

    parselnt()用于将字符串转为整数
    parseFloat()用于将一个字符串转为浮点数
    isNaN()判断一个值是都为NaN

    :null,:后退键 f换页符 换行符 制表符 v垂直制表符
    '单引号 "双引号 反斜杠

    length属性返回字符串的长度

    对象的引用
    如果取消某一个变量对于原对象的引用,不会影响到另一个变量

    var o1 = {};
    var o2 = o1;
    
    o1 = 1;
    o2 // {}
    

    这种引用只局限于对象,如果两个变量指向同一个原始的值,变量这时都是值的拷贝

    var x=1;
    var y=x;
    
    x=2;
    y//1
    

    表达式还是语句
    如果要解释为对象,最好在大括号前加上圆括号。 ({foo:123})

    属性的读取
    如果使用方括号运算符,键名必须放在引号里面,否则会被当作变量处理。

    var foo = 'bar';
    
    var obj = {
      foo: 1,
      bar: 2
    };
    
    obj.foo  // 1
    obj[foo]  // 2
    

    属性的删除delete
    属性是否存在:in运算符

    var obj = {};
    if ('toString' in obj) {
      console.log(obj.hasOwnProperty('toString')) // false
    }
    

    属性的遍历: for...in循环

    with语句
    操作同一个对象的多个属性时,提供一些书写的方便

    // 例二
    with (document.links[0]){
      console.log(href);
      console.log(title);
      console.log(style);
    }
    // 等同于
    console.log(document.links[0].href);
    console.log(document.links[0].title);
    console.log(document.links[0].style);
    

    用临时变量代替with
    // 可以写成
    var temp = obj1.obj2.obj3;
    console.log(temp.p1 + temp.p2);

    函数执行时所在的作用域,是定义时的作用域,而不是调用时所在的作用域
    函数参数不是必需的,JavaScript允许省略参数

    传递方式
    函数参数如果是原始类型的值,在函数体内修改参数值,不会影响到函数外部。

    var p = 2;
    
    function f(p) {
      p = 3;
    }
    f(p);
    
    p // 2
    

    如果函数参数是复合类型的值(数组、对象、其他函数),传递方式是传址传递(pass by reference)

    var obj = [1, 2, 3];
    
    function f(o) {
      o = [2, 3, 4];
    }
    f(obj);
    
    obj // [1, 2, 3]
    

    上面代码中,在函数f()内部,参数对象obj被整个替换成另一个值。这时不会影响到原始值。这是因为,形式参数(o)的值实际是参数obj的地址,重新对o赋值导致o指向另一个地址,保存在原地址上的值当然不受影响。

    给对象赋值相当于开辟一个新的地址;

    arguments对象
    读取函数体内的参数
    arguments对象的length属性, 可以判断调用时带几个参数

    转换为数组
    var args=Array.prototype.slice.call(arguments);
    callee属性
    arguments.callee返回它所对应的原函数

    闭包: 读取其他函数内部变量的函数

    立即调用的函数表达式(IIFE)
    1.避免了污染全局变量, 2内部形成了一个单独的作用域
    封装一些外部无法读取的变量

    (function(){
    var tmp=newData;
    processData(tmp);
    storeData(tmp);
    })

    数组: push, delete, in, forEach.for..in

  • 相关阅读:
    python快捷键的使用【摘抄】
    Jmeter5.1 Plugins Manager配置dummy使用jp@gc
    jmeter正则中常见的转义字符-笔记三
    测试人员问问题的技巧是什么?
    一个简单的python实现百度登录操作
    2.3 Go内置函数
    2.2 Go变量类型
    2.1Go语言特性
    1.2Go环境搭建之Mac
    1.1Go环境搭建之Linux
  • 原文地址:https://www.cnblogs.com/Remedy/p/12795840.html
Copyright © 2011-2022 走看看