• js 杂谈


    js解释器有自己的内存管理机制(垃圾回收:自动回收无引用指向对象)

    js采用一种数字类型(64位浮点数),100与1e2完全相等

    条件判断是被当为假的值:false、null、undefined、‘’、0、NaN

    Infinity 属性用于存放表示正无穷大的数值。-Infinity 属性用于存放表示负无穷大的数值

    数字、字符串、布尔值不可变,不是对象,对象是可变的键控集合(如:数组、函数、正则表达式、对象)。

    NaN!==NaN  (不等于自己的数)

    isNaN()    (NaN或者非数字如对象,返回true)

    isFinite()  (不是NaN Infinity -Infinity 时返回 true)

    0===-0    1/0!==1/-0 (正负无穷不等)

    if(undefined){}     if语句将undefined转换为false,    ‘==’  运算符从不试图将其操作数转换为布尔值

    String(false)     'false'

    除null、undefined,都有toString()方法

    +运算符的一个操作数是字符串,会把另外一个操作数转换为字符串     x+‘’ ==  String(x)

    一元+将操作数转换为数字     +x  == Number()   == x-0

    一元!将操作数转换为布尔值并取反     !!x   ==  Boolean(x)

    var n=17 ; n.toString(2)      // ' 10001'

    Number类   var n=12.78;  n.toFixed(0)  13

    Number()只能基于十进制转换,且str不能出现非法的尾随字符

    parseInt()、parseFloat()是全局函数,不从属于任何类的方法,更加灵活

    所有对象转到原始布尔值时均为true     new Boolean(false)  是对象,为true

    var i=1,j=++i; // 2 2
    var i=1,j=i++; // 2 1

    'one' <3  // false(其中一个操作数是NaN ,比较操作符总数返回false)

    0==-0    0===-0    true

    11<3
    '11'>3 (任意一个不是字符串,比较)
    '11'<'3' (两个都是字符串时,字符串比较)

    && ‘短路’(即:只有当左侧表达式运算为true时才开始计算第二个表达式)
    if(a==b) stop() (a==b) && stop() (只有当a==b为真时执行stop)

    三元运算符
    x>0?x:-x;
    str='name'+(username?username:'hello');

    (typeof val=='string') ? "'"+val+"'":val
    typeof 区分对象与原始值
    instanceof classconstructor 区分对象的类

    原始类型  属性调用解释、存储机制  (容错处理)

    var str='123'     

    str.length   3    //  new String(123)    new String(123).length

    str.a='a'    str.a  -   undefined    //   new String(123)      new String(123).a='a'    delete  new String(123).a                str.a     new String(123).a     undefined

    var a=0; a = (a++) + (++a) - (a++) - (a++);         //  -3         0/1  +  2/2  - 2/3  -3/4

    换为字符串
    '' + 10 === '10'; // true
    转换为数字
    +'10' === 10; // true
    Number('010') === 10
    parseInt('010', 10) === 10 // 用来转换为整数
    转换为布尔型
    !!'foo'; // true

    js注释优选行注释 // (/*  */ 块注释与正则表达式冲突)

    一种面向对象语言需要向开发者提供四种基本能力:
    封装 - 把相关的信息(无论数据或方法)存储在对象中的能力 (。dll、class-class)
    聚集 - 把一个对象存储在另一个对象内的能力
    继承 - 由另一个类(或多个类)得来类的属性和方法的能力
    多态 - 编写能以多种方法运行的函数或方法的能力 (龙生九子各不相同)


    <script src="js/require.js" defer async="true" ></script>
    异步加载

    js库细则
    1.不要使用版本检测,而要使用能力检测
    2.使用命名空间
    3.()在JavaScript中有两种含义:一是运算符;二是分隔符。

    js中对象是可变的键控集合,除了number string Boolean null undefined,其他都是对象。
    js中,每个对象都连接到一个原型对象,并且从中继承属性,
    所有通过对象字面量创建的对象都连接到 Object.prototype 这个标准的js对象。
    (函数对象连接到 Function.prototype ,该原型本身又连接到 Object.prototype ,
    同时,每个函数在创建时附有两个隐藏属性:函数上下文,实现函数行为的代码

    原型连接在更新时不起作用,对某个对象做出改变不会触及原型
    原型连接在检索时: 对象本身属性 - Object.prototype ,这一过程就是委托。
    原型关系是动态关系,添加属性到原型,所有基于此原型的对象即时拥有此属性。
    hasOwnProperty方法不检查原型链
    fight.hasOwnPreperty("number") //true
    fight.hasOwnPreperty('constructor') //false

    var obj = {
    "name":"wj",
    "age":27
    };
    for( ele in obj ){
    if (obj.hasOwnProperty(ele)) {
    console.log(ele,obj[ele]);
    };
    };

    delete 可删除对象属性,不会触及原型链中对象及其属性
    (删除对象属性可以让来自原型链中属性浮现出来)

    函数 包含一组语句 是js基础模块单元
    用于代码复用、信息隐藏、组合调用(指定对象行为)
    编程,就是将一组需求分解成一组函数与数据结构的技能。

    通过函数字面量创建的函数对象包含一个连接到外部上下文的链接,这就是闭包。

    调用运算符 是 函数表达式后的一对圆括号

  • 相关阅读:
    过滤的特殊字符
    iOS中正则表达式的基本使用方法
    sqlite3特殊的字符转义
    tableView的设置
    IOS中设置cell的背景view和选中时的背景view 、设置cell最右边的指示器(比如箭头文本标签)
    IOS中(类似于进度条哪种效果)MBProgressHUD的使用
    ISO中AFN的使用步骤
    IOS中用UIFont返回字体的行高、动态改变tableView中Cell的高度
    iso中第三方框架SDWebImage的使用步骤
    iso中自动伸缩属性
  • 原文地址:https://www.cnblogs.com/justSmile2/p/9872963.html
Copyright © 2020-2023  润新知