JavaScript 精粹 基础 进阶表达式和运算符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 精粹 基础 进阶表达式和运算符相关的知识,希望对你有一定的参考价值。

转载请注明出处

原文连接 http://blog.huanghanlian.com/article/5b698e88b8ea642ea9213f4a

表达式和运算符

javascript 表达式

表达式是指能计算出值得任何可用程序单元。——Wiki

表达式是一种JS短语,可使JS解释器用来产生一个值。——《JS权威指南》

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

JavaScript 运算符

技术图片

三元运算符

    c ? a : b
    var val = true ? 1 : 2; // val = 1
    //val值为true就会返回冒号前面的值,如果是false就会取冒号右边的值。

逗号运算符

    a, b
    var val = (1, 2, 3); // val = 3
    //非常少见的,它会从左到右依次去计算表达式的值,最后会取最右边的值。

delete 运算符

delete obj.x;
var obj = {x : 1};
obj.x;                      // 1
delete obj.x;
obj.x;                      // undefined
//delete 运算符就是删除对象上的属性,变量obj,obj.x被删除了。

并不是对象上的所有属性都可以成功的被delete 掉的。

var obj = {};
Object.defineProperty(obj, ‘x‘, {
  configurable : false,
  value : 1
});
delete obj.x;     // false
obj.x;            // 1

只有configurable : true, 为true,才可以被删除。

in运算符

window.x = 1;       //创建全局变量x为1
x in window;        // true   判断是否win下有x

instanceof, typeof运算符

{} instanceof Object                // true  判断对象类型,基于原型链去判断的
typeof 100 === ‘number’ // true  返回字符串,常用语原始类型,或者函数对象。

new运算符

function Foo(){}; //创建函数构造器,或者说创建空函数
Foo.prototype.x = 1; //prototype属性x
var obj = new Foo(); //创建一个新的对象obj
obj.x; // 1 现在就能在prototype属性x拿到1
obj.hasOwnProperty(‘x‘); // false 来判断这个属性到底是这个对象上的还是这个对象原型链上,这个x当然不是属于直接对象上的属性,
obj.proto.hasOwnProperty(‘x‘); // true 拿到对象原型。可以发现x是对象原型上的属性,而不是这个对象本身上的属性。

this运算符

this运算符;                        // window (浏览器)  在全局下this会指向win
var obj = {
  func : function(){return this;}
};
obj.func();                       // obj
//如果在对象值如果是个函数的话那么在这样的函数里,this会指向对象本身。

void运算符

void运算符是一元运算符,

void 0  // undefined
void(0) // undefined
//不管值是多少都会返回undefined

技术图片

技术图片

以上是关于JavaScript 精粹 基础 进阶表达式和运算符的主要内容,如果未能解决你的问题,请参考以下文章

avaScript 精粹 基础 进阶数据类型

JavaScript 精粹 基础 进阶对象

JavaScript 精粹 基础 进阶函数和作用域(闭包作用域)

JavaScript 精粹 基础 进阶函数和作用域(函数this)

JavaScript 精粹 基础 进阶数据类型

JavaScript 精粹 基础 进阶语句