javascript基本功002

一、赋值优先级前端

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

如最高到最低的优先级:spa

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

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

    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"}指向code

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

 

二、基础细节内容例子blog

工做也好久了,以为须要沉淀一下,由于如今前端的知识更新太快了,但基础的更新是很慢的,而全部的知识更新都是对基础知识的封装而后更加便利的使用,因此基础扎实才是快速上手新东西的王道。ip

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指向、运算符优先级、原型、全局变量、对象属性、原型属性优先级。内存

对象属性get

Foo.getName();
// 2

变量声明提高

getName();
// 4

全局变量、this指向

Foo().getName();
// 1

全局变量

getName();
// 1

原型

new Foo.getName();
// 2

原型、原型属性优先级

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

运算符优先级

new new Foo().getName();
// 3
相关文章
相关标签/搜索