其他运算符
来源:互联网 发布:布汶战役 知乎 编辑:程序博客网 时间:2024/06/15 00:44
表达式计算
eval():解释运行由JavaScript源代码组成的字符串,并产生一个值。
eval("3+2"); // => 5
书中讲动态判断源代码中的字符串是一种强大的语言特性,几乎没有必要在实际中应用。我同意这种看法。
eval()只有一个参数,使用调用它的变量作用域环境。
全局eval
当通过别名调用eval()时,eval()会将其字符串当成顶层的全局代码来执行。
真正使用eval()的场景并不多,必要的话,更可能使用全局的而不是局部的eval()。
严格eval()
严格模式下的eval,可以查询或更改局部变量,但不能在局部作用域中宣言新的变量或函数。
关于eval,又是一个我之前从没见过的东西,通过对它的了解,我觉得eval只需要了解一下,知道它的作用,如果真遇到了能看明白就够了。
其他运算符
条件运算符(?:)
唯一一个三元操作符(需要三个操作数),也可以称作三元运算符。
操作数可以是任意类型,与C++中的条件运算符类似,第一个操作数当成布尔值,如果是真值,计算第二操作数,并返回结果;否则,计算第三个操作数,并返回结果。
使用if语句也能达到同样的效果,“?:”只是提供了一种科室形式。
greeting = "hello " + (username ? username : "there");greeting = "hello ";if (username) { greeting += username;} else { greeting += "there";}
typeof运算符
typeof是一元运算符,放在操作数前面,操作数可以是任意类型,返回值是表示操作数类型的字符串。
当操作数是null时,typeof返回”object”。
函数是对象的一种,但typeof运算符将函数特殊对待,返回”function”。ECMAScript 5规范中,所有可执行对象进行typeof运算,都将返回”function”。
delete运算符
delete是一元操作符,用来删除对象属性或者数组元素。
delete用来做删除操作,不是用来返回一个值:
var o = {x: 1, y: 2};delete o.x;"x" in o; // false,属性x已经不存在了var a = [1, 2, 3];delete a[2];2 in a; // false,索引为2的元素已经不存在了
删除属性或者删除元素不仅仅是设置了一个undefined值。当删除一个属性时,这个属性将不再存在。读取一个不存在的属性将得到undefined,但是可以通过in运算符来检测这个属性是否在对象中存在。
delete希望它的操作数是一个左值,如果不是左值,则不进行任何操作,并返回true;否则将试图删除这个指定的左值。如果删除成功,返回true。
然而并非所有的属性都可删除:
- 一些内置核心和客户端属性是不能删除的
- 用户通过var语句声明的变量不能删除
- 通过function语句定义的函数和函数参数也不能删除
在ECMAScript 5严格模式中,如果delete的操作数是非法的,则抛出一个语法错误(SyntaxError)异常。删除不可配置的属性时会抛出一个类型错误异常。而在非严格栻上,这些操作都不报错,只是简单地返回false,以表明操作数不能执行删除操作。
在C++中,delete操作符用来删除对象,释放内存。
var o = {x: 1, y: 2};delete o.x; // 返回truetypeof o.x; // 属性不存在,返回"undefined"delete o.x; // 删除不存在的属性返回truedelete o; // 删除通过var声明的变量,返回false// 在严格模式下,将抛出一个异常delete 1; // 操作数不是左值,返回truethis.x = 1; // 给全局对象定义一个属性,没有使用vardelete x; // 试图删除x,在非严格模式下返回true// 在严格栻上会抛出异常,使用"delete this.x"来代替x; // 运行时错误,没有定义x
void运算符
void是一元运算符,出现在操作数之前,操作数可以是任意类型。操作数会照常计算,但忽略计算结果并返回undefined。
JavaScript的void是个运算符,而在C++的void是一个关键字,用于特殊目的的没有操作也没有值的类型。最经常用作不返回结果的函数的返回类型。
逗号运算符(,)
逗号去运算符是二元运算符,它的操作数是任意类型的。首先计算左操作数,再计算右操作数,最后返回右操数的结果。
i = 0, j = 1, k = 2;// 等价于i = 0;j = 1;k = 2;
逗号运算符最常用的场景是在for循环中:
for (var i = 0, j = 10; i < j; i++, j--) { console.log(i + j);}
- 其他运算符
- 其他运算符
- 其他数据类型和运算符
- C#的其他运算符
- 第十一节 java学习 其他运算符
- java移位运算符以及其他运算符的操作
- Java 运算符: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 其他运算符
- 位运算其他应用
- java基础4--其他数据类型与运算符
- 【2014】【辛星】【php】【秋季】【5】其他的变量运算符
- Javascript(一)-06-(JS语法-其他运算符)
- C#入门4.7——其他运算符
- c——运算符——其他
- PHP学习笔记——PHP中其他运算符;
- swift——运算符——其他
- 通过位运算符把其他位屏蔽掉
- asp.net(c#)中的逻辑(布尔型)运算符以及其他运算符
- bash中的加法运算和其他运算
- spring mvc 的web.xml配置
- Linux redhat7.0 U盘安装教程
- STL容器概述
- 剑指Offer(面试题38~39)
- usb68013固件之SlaveFIFO
- 其他运算符
- 微小宝中,如何添加涨粉账号?
- JavaScrapt朝花夕拾
- 【微信公众平台开发】关于微信支付jsapi的简单逻辑
- Maven自动热部署到Tomcat服务器
- kafka启动过程中的一个小问题
- centos7下安装git及使用(2)
- 9 OC加强03
- C++::由一个例子入手前置声明