zoukankan      html  css  js  c++  java
  • javascript基本功002

    1、赋值优先级

    按从最高到最低的优先级列出JavaScript运算符。具有相同优先级的运算符按从左至右的顺序求值。

    如最高到最低的优先级:

    一道简单的数学题
    z = 78 * (96 + 3 + 45)
    // 11232

    如相同优先级的运算符按从左至右:

        var o = {n:3};
        var g = o;
        o.x = o = {c:"abc"};
    
        // g {n:3,x:{c:"abc"}}
        // o {c:"abc"}
        // o.x undefined

    这个还关联到引用的问题,如开始时o与g是指向同一个堆内存地址, 然后由于相同优先级的运算符按从左至右所以o.x的栈内存保存的堆内存地址还没有变,那么o.x就先拿出地址后再到o={c:"abc"}指向

    新的堆内存地址,而所以g的对内存地址有变动,而o就指向了新堆内存地址,然后后面使用o.x是undefined的,因为上面赋值的o.x与下面获取的o.x已经不是同一个堆内存地址了。

    2、基础细节内容例子

    工作也很久了,觉得需要沉淀一下,因为现在前端的知识更新太快了,但基础的更新是很慢的,而所有的知识更新都是对基础知识的封装然后更加便利的使用,所以基础扎实才是快速上手新东西的王道。

    function Foo(){
        getName = function(){
            console.log(1);
        }
        return this;
    }
    Foo.getName = function(){
        console.log(2);
    }
    Foo.prototype.getName = function(){
        console.log(3);
    }
    var getName = function(){
        console.log(4);
    }
    
    function getName(){
        console.log(5);
    }
    
    Foo.getName();
    getName();
    Foo().getName();
    getName();
    new Foo.getName();
    new Foo().getName();
    new new Foo().getName();
    //输出值为多少

    以上涉及到变量声明提升、this指向、运算符优先级、原型、全局变量、对象属性、原型属性优先级。

    对象属性

    Foo.getName();
    // 2

    变量声明提升

    getName();
    // 4

    全局变量、this指向

    Foo().getName();
    // 1

    全局变量

    getName();
    // 1

    原型

    new Foo.getName();
    // 2

    原型、原型属性优先级

    new Foo().getName();
    // 3

    运算符优先级

    new new Foo().getName();
    // 3
  • 相关阅读:
    C# 多线程 弹出模态MessageBox的一种方法
    CentOS 7安装Docker
    CentOS 6 安装Docker
    docker三要素
    openstack_dashboard无法获取nova
    cinder安装与配置
    Dashboard安装与配置
    openstack-neutron安装与配置
    openstack在controller节点使用openstack network agent list不显示计算节点
    nova安装与配置
  • 原文地址:https://www.cnblogs.com/zhangzhicheng/p/9744545.html
Copyright © 2011-2022 走看看