js权威指南学习笔记(二)表达式与运算符
2018-08-26 17:27:58来源:博客园 阅读 ()
1、数组初始化表达式
var arr = [1,,,,,6];
console.log(arr[2]); //打印数组中索引为2的值->undefined
w = x + y * z;
/*
首先计算表达式w,然后计算x,y,z,然后y的值与z的值相乘,再加上x的值,最后赋值给w所指代的变量或属性。
*/
用于检测某个属性名是否属于某个对象。
var point = { //定义一个对象
x: 1,
y: 1
};
console.log("x" in point); //true
console.log("z" in point); //false
console.log("toString" in point); //true:对象继承了toString()方法
var d = new Date(); //通过Date()构造函数实例化一个新的对象
console.log(d instanceof Date); //true
console.log(d instanceof Object); //true
console.log(d instanceof Number); //false
var o = {
x: 3
};
var p = null;
console.log(o && o.x); //o和o.x都为真,返回o.x的值3
console.log(p && p.x); //p为假值,返回p的值null,不去计算p.x
//如果max_width已经定义,直接使用它;否则在preferences对象中查找max_width
//如果没有定义它,则使用一个写死的常量
var max = max_width || preference.max_width || 500;
// 对于p和q取任意值,这两个等式都永远成立
!(p && q) == !p || !q
!(p || q) == !p && !q
var data = [1, 2, 3, 4];
for (var i = 0; i < 4; i++) {
//根据表达式从左到右的运算顺序,++运算法则,先计算data[i]的值为1,i再加1
//1*2 = 2,求得第一个值,i++,i为3,再次执行循环
console.log(data[i++] *= 2); //2,6
}
for (var j = 0; j < data.length; j++) {
//同上,先计算=左边的值后,j+1变为1,然后计算右边的表达式值,
//此时j为1,data[j]=2,求得第一个值为4,然后j+1变为2,
//j++,j为3,再次执行循环
console.log(data[j++] = data[j++] * 2); //4 NaN
}
eval("3+2") // 5
eval("var y = 3"); //声明一个新的局部变量y
var geval = eval; //使用别名调用eval将是全局eval
var x = "global",
y = "global";
function f() { //函数内执行的是局部的eval
var x = "local";
eval("x += 'change';"); // 直接eval更改局部变量的值
return x; //返回更改后的局部变量
}
function g() { //函数内执行的是全局的eval
var y = "local";
geval("y += 'changed';"); //间接调用更改了全局变量的值
return y; //返回未更改的局部变量
}
console.log(f(), x); // localchange global
console.log(g(), y); // local globalchanged
var o = { x : 1, y : 2}; //定义一个对象
delete o.x; //删除一个属性
"x" in o //false 属性不存在
var a = [1,2,3]; //定义一个数组
delete a[2]; //删除索引为2 的数组元素
2 in a; //false 索引为2的数组元素不存在
a.length // 3, 数组长度并没有改变,因为其它值的索引并没有改变
var o = { x:1, y:2};
delete o.x; //true
typeof o.x; //undefined 属性不存在
delete o.x; //true 不存在属性
delete o; //false var声明不能删除
delete 1; //true 不是左值(属性)
this.x = 1; //全局定义一个属性
delete x; //true(非严格模式下) 严格模式下使用 delete this.x
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:react 会员登录
下一篇:webpack必知必会
- 如何用javascript连接access数据库 2020-03-20
- 在JavaScript中尽可能使用局部变量的原因 2020-03-08
- JsEasy的介绍 2019-10-25
- DEFER的使用方法 2019-10-25
- JavaScript事件的基本学习 2019-08-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash