文档章节

JavaScript基础之JavaScript表达式和操作符

klink
 klink
发布于 2014/06/03 17:10
字数 1096
阅读 10
收藏 0

Object 和 Array 的初始化

对Array初始化是使用“,”将元素分隔开。

[] // An empty array: no expressions inside brackets means no elements
[1+2,3+4] // A 2-element array. First element is 3, second is 7

Array中的元素自身也可以是Array

var matrix = [[1,2,3], [4,5,6], [7,8,9]];

Object的初始化表达式与Array很相似。

var p = { x:2.3, y:-1.2 }; // An object with 2 properties
var q = {}; // An empty object with no properties
q.x = 2.3; q.y = -1.2; // Now q has the same properties as p
var rectangle = { upperLeft: { x: 2, y: 2 },
lowerRight: { x: 4, y: 5 } };

Object属性的标识符可以是字符串。而且 " 和 ' 都可以使用。

var side = 1;
var square = { "upperLeft": { x: p.x, y: p.y },
'lowerRight': { x: p.x + side, y: p.y + side}};

方法定义的表达式

// This function returns the square of the value passed to it.
var square = function(x) { return x * x; }

访问Property的表达式

JavaScript提供了两种访问Property的语法

expression . identifier
expression [ expression ]

如:

var o = {x:1,y:{z:3}}; // An example object
var a = [o,4,[5,6]]; // An example array that contains the object
o.x // => 1: property x of expression o
o.y.z // => 3: property z of expression o.y
o["x"] // => 1: property x of object o
a[1] // => 4: element at index 1 of expression a
a[2]["1"] // => 6: element at index 1 of expression a[2]
a[0].x // => 1: property x of expression a[0]

方法调用的表达式

如:

f(0) // f is the function expression; 0 is the argument expression.
Math.max(x,y,z) // Math.max is the function; x, y and z are the arguments.
a.sort() // a.sort is the function; there are no arguments.

创建对象的表达式

如:

new Object()
new Point(2,3)

如果该对象的构造函数没有参数,我们也可以省略括号直接写成:

new Object
new Date

instanceof操作符

JavaScript提供了instanceof操作符,能够判断instanceof左右两边是否为同一对象。

var d = new Date(); // Create a new object with the Date() constructor
d instanceof Date; // Evaluates to true; d was created with Date()
d instanceof Object; // Evaluates to true; all objects are instances of Object
d instanceof Number; // Evaluates to false; d is not a Number object
var a = [1, 2, 3]; // Create an array with array literal syntax
a instanceof Array; // Evaluates to true; a is an array
a instanceof Object; // Evaluates to true; all arrays are objects
a instanceof RegExp; // Evaluates to false; arrays are not regular expressions

eval 表达式

JavaScript能够对JavaScript代码作解析,并生成相应的值。这个过程就是通过eval()方法完成的。

eval("3+2") // => 5

eval()需要一个参数。

  • 如果参数不是String的话,eval()会直接返回参数,而不会做任何解析。
  • 当参数是一个String时,JavaScript会尝试去解析JavaScript代码,如果这段代码中碰到语法错误,JavaScript会抛出SyntaxError的错误。
  • 如果没有语法问题,eval()就会执行这段代码,将最终的结果作为返回值输出。
  • 如果将执行的过程中,碰到Exception,eval()将将Exception继续往外抛出给它的上层。

如果定义一个变量x, 当调用eval("x"),就会将变量x的值取出作为返回值返回。eval("x=1")会把x的值修改成1.

我们可以通过eval()定义变量。eval("var y=3;");

还可以通过eval()定义方法。

eval("function f() { return x+1; }");

typeof 操作符

你可以通过下面这个表达式使用typeof 操作符

(typeof value == "string") ? "'" + value + "'" : value

我们也可以通过下面这种语法来使用typeof操作符

typeof(i)

typeof 的值如下:

x          						typeof x
undefined  							"undefined"
null         						"object"
true or false       				"boolean"
any number or NaN 					"number"
any string 							"string"
any function 						"function"
any nonfunction native object 		"object"
any host object 					An implementation-defined string, but not “undefined”,“boolean”, “number”, or “string”.

instanceof 操作符可以区分不同对象,如 a instanceof Date. 而typeof无法区分具体的对象。

delete 操作符

delete操作符可以从Objects删除Object的Property,也可以从arrays删除array item。

如:

var o = { x: 1, y: 2}; // Start with an object
delete o.x; // Delete one of its properties
"x" in o // => false: the property does not exist anymore

var a = [1,2,3]; // Start with an array
delete a[2]; // Delete the last element of the array
a.length // => 2: array only has two elements now

被删除的propery或者array item会从Object或者array中被用久删除,而不是仅仅将它们设置成undefined. 另外我们也可以通过使用in操作符来判断被删除的元素是否还在Object或者array中。

void 操作符

这个操作符会被偶尔使用: 它会解析跟在它之后的表达式,但是不会把表达式的值返回。

void操作符的格式如下:

javascript:void(expression);
javascript:void expression;

如:

<a href="javascript:void window.open();">Open New Window</a>

这样子写的话,就不需要定义onclick事件。

6/3/2014 5:02:45 PM

© 著作权归作者所有

共有 人打赏支持
klink
粉丝 0
博文 24
码字总数 29450
作品 0
苏州
学习Javascript的8张思维导图

分别归类为:  javascript变量  javascript运算符  javascript数组  javascript流程语句  javascript字符串函数  javascript函数基础  javascript基础DOM操作  javascript正则表达式...

thinkyoung
2014/09/23
0
0
JAVASCRIPT_a href=#与 a href=javascript:void(0) 的区别

<a href="#"> 点击链接后,页面会向上滚到页首,# 默认锚点为 #TOP <a href="javascript:void(0)" onClick="window.open()"> 点击链接后,页面不动,只打开链接 <a href="#" onclick="javas......

喵王不瞌睡
2014/04/05
0
0
简单说 正则表达式——要注意lastIndex属性

说明 这篇文章,主要和大家聊聊JavaScript中RegExp对象的属性。 解释 每个RegExp对象都包含5个属性,source、global、ignoreCase、multiline、lastIndex。 source:是一个只读的字符串,包含...

FEWY
2017/07/10
0
0
【JavaScript基础系列】决定你的人生能走多远的,是基础。

前言    javaScript门槛非常低,一点语法,一个dom,一个bom就可以使用它开发大部分js应用,再加上现在层出不穷的框架极大的简化抽象了javaScript的使用方式,但是我们始终不能忘记的一点...

grootzhang
2017/09/12
0
0
javascript:基本数据结构

JavaScript提供脚本语言的编程与C++非常相似,它只是去掉了C语言中有关指针等容易产生的错误,并提供了功能强大的类库.对于已经具备C++或C语言的人来说,学习JavaScript脚本语言是一件非常轻松愉...

街边
2014/01/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
1
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
9
0
vm GC 日志 配置及查看

-XX:+PrintGCDetails 打印 gc 日志 -XX:+PrintTenuringDistribution 监控晋升分布 -XX:+PrintGCTimeStamps 包含时间戳 -XX:+printGCDateStamps 包含时间 -Xloggc:<filename> 可以将数据保存为......

Canaan_
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部