JavaScript学习笔记02 —— 表达式和运算符

本系列为阅读《JavaScript权威指南》之后所做的笔记,只供个人学习与参考。

知识要点

  • 一些原始表达式
    1.23  //数字直接量
    "hello"  //字符串直接量
    /pattern/  //正则表达式直接量
    
    true  //布尔值:真
    false  //布尔值:假
    null  //空
    this  //返回“当前”对象
    
    i  //变量“i”
    sum  
    undefined  //undefined是全局变量,和null不同,它不是一个关键字
  • 下面数组包含5个元素,其中三个元素是undefined
var sparseArray = [1,,,,5];
  • 对象初始化
var p = {x:2.3,y:-1.2};//一个拥有两个属性成员的对象
var q = {}; //空对象
  • 函数定义表达式
var square = function(x) { return x*x; }
  • 属性访问表达式
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]
  • 对象创建表达式
new Object()
new Point(2,3)
  • 运算符及其优先级

内容过多,略去。这里特别注意下位运算符:与(&) 、 或(|) 、 非(~) 、异或(^) 、 左移(<<) 、 右移(>>)。

一些示例

===== 区别

恒等于(===)一般要求比较的两者值和类型都要相同。
测试用例:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>比较运算测试</title>
</head>
<body>
    <script type="text/javascript">
    console.log(null===undefined);  //false
    console.log(true===1);  //false
    console.log(NaN===NaN);  //false
    console.log(NaN!==NaN);  //true
    console.log(0===-0);  //true
    console.log(0xf===16);  //false
    </script>
</body>
</html>

NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。

eval

eval("3+2");   //5
var geval = eval; // Using another name does a global eval
var x = "global", y = "global"; // Two global variables
function f() { // This function does a local eval
var x = "local"; // Define a local variable
eval("x += 'changed';"); // Direct eval sets local variable
return x; // Return changed local variable
}
function g() { // This function does a global eval
var y = "local"; // A local variable
geval("y += 'changed';"); // Indirect eval sets global variable
return y; // Return unchanged local variable
}
console.log(f(), x); // Local variable changed: prints "localchanged global":
console.log(g(), y); // Global variable changed: prints "local globalchanged":

标签:javascript