js 逗号操作符】的更多相关文章

有一道js面试题,题目是这样的:下列代码的执行结果是什么,为什么? var i, j, k; for (i=0, j=0; i<10, j<6; i++, j++) { k = i+j; } document.write(k); 答案是显示10,这道题主要考察JavaScript的逗号运算符. 下面是MDN对逗号运算符的定义: 逗号运算符计算两个操作数(从左至右)并返回第二个操作数的值. 根据这个定义,可以扩展一下: 逗号运算符从左到右计算两个或多个操作数并返回最后一个操作数的值. 可以感觉一…
class Test { public: template<class T> Test& operator,(T t) { //具体操作 return *this; } } Test test; #define TEST(...) test,__VA_ARGS__ 按上述操作,因为__VA_ARGS__宏每次展开后为逗号参数列表.如 TEST(1,2,3)展开为test,1,2,3. 这时test因为重载了逗号操作符,每次逗号操作后又返回test的引用,就可以依次处理1,2,3这三个入…
一.switch-case switch-case语句主要用在多分支条件的环境中,在这种环境中使用if语句会存在烦琐且效率不高的弊端. switch(expression) { case const expression1: .... case const expression2; ... default: ... } 在执行过程中,expression的值会与每个case的值比较,实现switch语句的功能.关键字case和它所关联的值被称作case标号.每个case标号的值都必须是一个整形常…
今天在CSDN看到一篇文章http://www.csdn.net/article/2014-01-06/2818025-Useful-JavaScript-Tips-Best-Practices?reload=1,提到JavaScript中的逗号操作符的用法,平时工作中很少会用到它,查了一下文档才知道其用法. 逗号操作符的运算规则:从左到右,依次计算,然后返回最右边的结果. 例如: var a = 1; var b = 2; var c = 3; var d = (a++,b--,++c); 结…
让我们从一个有趣的微博开始吧. 末尾的c是优先级最低的逗号操作符.逗号操作符是操作符优先级的最后一行,并且很少有文章记录,它隐藏着它的锋芒.它可能不是JavaScript强势操作符,但是我喜欢它.它简单.优雅并且你应该让它成为你的朋友.所以,我们开始吧--你需要更多了解JavaScript这个害羞英雄. 它是做什么的? 逗号操作符评估它的操作数(从左到右)并返回第二个操作数的值.(MDC) var a = (7, 5); a; var x, y, z; x = (y=1, z=4); x; y;…
6.5.17 逗号操作符 语法 1.expression: assignment-expression expression    ,    assignment-expression 语义 2.一个逗号操作符的左操作数被计算为一个void表达式:在其计算与右操作数计算之间有一个顺序点.然后,右操作数被计算:结果是右操作数的类型与值[注:一个逗号操作符不产生一个左值.] 3.例  由语法所指示的,逗号操作符(在此子条款中描述)不能出现在一个逗号被用于分隔一个列表中项的上下文中(诸如函数的实参或初…
1,关注逗号操作符重载后带来的变化: 2,逗号操作符: 1,逗号操作符(,)可以构成都好表达式:exp1, exp2, exp3, ..., expN 1,逗号表达式用于将多个表达式连接为一个表达式: 1,就是用来起连接不同语句作用的: 2,逗号表达式的值为最后一个子表达式的值: 1,最后一个必须有值: 3,逗号表达式中的前 N - 1 个子表达式可以没有返回值: 4,逗号表达式按照从左向右的顺序计算每个子表达式的值: 1,不能违反这个原生语义: 3,逗号表达式的示例实例分析: 1,main.c…
重载逗号操作符 逗号操作符算法:从左到右依次计算每一个表达式的值,整个逗号表达式的值等于最右边表达式的值,前面n-1个表达式可以没有返回值 重载逗号操作符: 参数必须有一个class成员 重载函数返回值类型必须是引用 使用全局函数对逗号操作符进行重载 不建议重载逗号操作符:不能实现左到右依次计算每一个表达式的值,重载之后为随机顺序,原因如下: 重载逗号操作符的本质是函数调用 进行函数调用之前,需要先计算出所有参数的值,且顺序是随机的 不重载逗号操作符也可以进行逗号运算 结论:不建议重载逗号操作符…
逗号运算符的用法详解 注意: 一.由于目前正在功读JavaScript技术,所以这里拿JavaScript为例.你可以自己在PHP中试试. 二.JavaScript语法比较复杂,因此拿JavaScript做举例. 最近重新阅读JavaScript权威指南这本书,应该说很认真的阅读,于是便想把所学的东西多记录下来.后 面本人将逐步写上更多关于本书的文章. 本文的理论知识来自于JavaScript权威指南,我这里做一下整理,或者说叫笔记. 如果你的基础够好的话,完全理解不成问题,但是如果读得有些郁闷…
在js中的某些场景,","是一种运算符号,只不过他的优先级要低于普通的原酸符,在变量声明或者return中,经常看到逗号表达式. 声明变量: var a=1,b=2,c=3; console.log(a,b,c) 输出:1,2,3 变量赋值: var a=1,b=2; var c=(a++),3; console.log(c); 输出:3 return返回值: var a=1; var fn = function(){ return a++,a }; console.log(fn())…
JavaScript中逗号运算符 JavaScript中逗号运算符(,)是顺序执行两个表达式.使用方法: expression1, expression2 其中expression1是任何表达式.expression2是任何表达式. JavaScript中逗号运算符, 运算符使它两边的表达式以从左到右的顺序被执行,并获得右边表达式的值., 运算符最普通的用途是在 for 循环的递增表达式中使用.例如: for (i = 0; i < 10; i++, j++){   k = i + j;} 每次…
JavaScript面试时候的坑洼沟洄——逗号.冒号与括号   看完了javaScript数据类型和表达式与运算符相关知识后以为可以对JavaScript笔试题牛刀小试一把了,没想到有一次次的死在逗号,冒号和括号上,不得已再看看这几个符号吧. 逗号 逗号我们常见的用法就是在连续声明一些变量的时候,可以少些很多var 1 2 3 var a=1,     b=2,     c=3; 方法参数我们使用逗号隔开,对象属性也是逗号隔开 ``` function fbn(name,title){} var…
delete操作符很陌生,很少会用到,但是既然碰到了,就mark一下: delete 操作符用于删除一个对象的属性: 注意点:只能删除自己的属性,从原型链上继承的属性是无法删除的:…
1.按位与 AND & var result = 25 & 3; alert(result); //1var result2 = 25 & -3;alert(result2); //25 按位与将两个操作数的每一位执行以下真值表: 第一个数值的位 第二个数值的位 结果  1  1  1  1  0  0  0 1  0  0  0  0 25的二进制补码:0001 1001; 3的二进制补码: 0000 0011; -3的二进制补码:1111 1101 25 & 3 = 0…
Overload Operator Comma 首先看看think in c++ 给出的一个重载的样例 #include <iostream> using namespace std; class After { public: const After& operator,(const After&) const { cout << "After::operator,()" << endl; return *this; } }; cl…
十进制 十六进制 二进制 右移>> 十进制值 F 1F FF…
话不多说,开始今天的码字之旅. 突然有种日更小说的感觉,emm... 操作符 ECMAScript(JS核心)描述了一组用于操作数据值的操作符,也包括算术操作符等等 而JS中这些操作符最鲜明的特点就是,可以适用于多种数据类型. 对于Object类型,通常会调用toString()或valueOf()方法以便运算符能够操作. 一元操作符 顾名思义,只能操作一个值的操作符叫做一元操作符 JS中这样的操作符有两类 1.  递增递减操作符 2.一元加(减),即常用的正负号 递增递减操作符 JS中的递增递…
ECMA-262用于操作数据值的操作符包括: 算术操作符 位操作符 关系操作符 相等操作符 ECMAScript操作符的不同之处在于:它能够适用于很多值,包括字符串,数字值,布尔值,甚至是对象.(在应用于对象时,相应的操作符通常会调用对象的valueOf()和(或)toString()方法,以便取得可以操作的值.) 1.一元操作符 (1)递增和递减操作符 需要注意的是: eg: 前置++age:变量的值在语句被求值之前改变. 后置age++:变量的值在语句被求值之后改变. 执行前置递增和递减操作…
"&&","||"逻辑重载操作符的缺陷 大家,都知道"&&","||"拥有"短路"功能 比如a=(0&&b) :  由于第一个操作数为0,所以不会去判断b的内容,直接执行a=0 比如a=(-100||b): 由于-100不为0,所以不会去判断b的内容,直接执行a=1 可以参考下面代码: int func(int i) { cout << "…
研究js加号操作符的时候,无意中试验了一个 console.log({} + "str");//NaN 发现结果居然是NaN,这让我百思不得其解. 我查阅资料,js高级编程里是这样总结的: 如果两个操作符都是数字,执行常规的加法计算:(试验这句没毛病) 如果有一个操作数是字符串,那么就要应用如下规则: 如果两个操作数都是字符串,则将第二个操作数与第一个操作数拼接起来:(试验这句没毛病) 如果只有一个操作数是字符串,则将另一个操作数转换为字符串,然后再将两个字符串拼接起来. 如果有一个操…
操作符是操作数据值的符号,也叫做运算符. 按照操作个数分为:一元运算符,二元运算符,三元运算符. 按功能分为:位操作符,布尔操作符,乘性操作符,加性操作符,关系操作符,关系操作符,相等操作符,条件操作符,赋值操作符,逗号操作符. 一元操作符,只能操作一个值的操作符. 1.递增递减操作符,执行前置递增递减的操作符时都是在语句请求前执行的,在计算机科学领域上讲,这种情况通常叫做副效应. 规则: 字符串是有限数字字符转化成数字值在加减1如果不包含有效数字,转换成NaN 浮点型正常转换加减1 布尔型,f…
1.关系操作符 注意点:1)比较操作数是两个字符串,是比较字符串的字符编码值. 如:"a" > "b"  返回 false:"a" > "B"  返回 true; 2)[特别注意]如果是比较两个数字类型的字符串,也是按照字符编码值比较. 如:"256" > "6"  返回 false; 2.相等==和全等=== 区别:相等比较有隐式类型转换,而全等则没有类型和数据都要相…
一.js整数的操作 使用|0和~~可以将浮点转成整型且效率方面要比同类的parseInt,Math.round 要快,在处理像素及动画位移等效果的时候会很有用.性能比较见此. var foo = (12.4 / 4.13) | 0;//结果为3 var bar = ~~(12.4 / 4.13);//结果为3 还有一个小技巧,就是!!2个叹号,可以讲一个值,快速转化为布尔值.你可以测试一下! var eee="eee"; alert(!!eee) 返回的是true,也就是说任何一个值前…
数据类型 ECMAscript中有五种简单数据类型Undefined,Null,Boolean,Number,String 还有一种复杂数据类型Object. typeof操作符 typeof可能返回下列某个字符串 undefined--------------如果这个值未定义 boolean----------------如果这个值是布尔值 string------------------如果这个值是字符串 number----------------如果这个值是数值 object------…
来自<javascript高级程序设计 第三版:作者Nicholas C. Zakas>的学习笔记(三) 如果你刚学js,想快速了解到js的基本概念,以下将会是一篇不错的引导文章: 语法 数据类型 流控制语句 理解函数 首先讲个段子:曾经有个人很天真地以为javascript和java肯定是一家,因为学过java,觉得javascript学习肯定就是三下五除二了.了解了一些javascript语法后,直到看过一遍淘宝前端团队译的<Javascript权威指南>,大为惊叹,刹那间愣住…
介绍 这是红宝书(JavaScript高级程序设计 3版)的读书笔记第三篇(灵魂篇介绍),有着剩下的第三章的知识内容,当然其中还有我个人的理解.红宝书这本书可以说是难啃的,要看完不容易,挺厚的,要看懂更不容易,要熟练js更是难,中间需要不断的积累与重温.因此不是读一两遍就能把这书吃透,需要多读,可谓温故而知新,可以为师矣. 很多人看这些厚的书都是三天打鱼两天晒网,很少能看下去,能记住的东西往往前3章的内容,所以我写博客就是为了能和大家一起来读这本书,一起学js. 温馨提示:笔记言辞会有主观色彩,…
JavaScript的最为基本知识 1语法 js是区分大小写的:标识符就是指变量.函数.属性的名字或者是参数,标识符可以是字母,下划线,美元符号,数字,注意第一个不能是数字:js采用的是驼峰大小格式:js的单行和多行注释:严格模式下直接"use strict"即可.关键字和保留字,比如break,case等等. 变量:js的变量类型是松散型的,即可以保留任何类型的数据,每个变量仅仅是个占位符,var 声明变量为局部变量,没有var的即为全局变量. 2数据类型 js的数据类型有五种简单的…
一.介绍 这是红宝书(JavaScript高级程序设计 3版)的读书笔记第三篇(灵魂篇介绍),有着剩下的第三章的知识内容. 红宝书这本书可以说是难啃的,要看完不容易,挺厚的,要看懂更不容易,要熟练js更是难,中间需要不断的积累与重温. 本书不是读一两遍就能把这书吃透,需要多读,可谓温故而知新,可以为师矣. 很多人看这些厚的书都是三天打鱼两天晒网,很少能看下去,能记住的东西往往前3章的内容,所以我写博客就是为了能和大家一起来读这本书,一起学JS. 二.基本概念(灵魂篇) 上一篇是躯壳篇讲的是一些了…
原文地址 http://perfectionkills.com/javascript-quiz/ 中文地址加解释:by Aaron:http://www.cnblogs.com/aaronjs/p/3172112.html 附带了自己的理解,答案有争议的地方欢迎大家指出 题目一 2 3 4 (function(){   return typeof arguments; })();  "object" arguments是对象,伪数组有两件事要注意这里: 参数不是数组,它是一个数组一样的…
Node的便民技巧-- 压缩代码 下载图片 压缩代码 相信很多前端的同学都会在上线前压缩JS代码,现在的Gulp Webpack Grunt......都能轻松实现.但问题来了,这些都不会,难道就要面对几十个JS文件一遍遍来回“复制-压缩-创建-粘贴”,这样太不人性化了. 于是可以借助Node + uglify-js 轻松实现.(前提你会点node操作) 1.首先看一下目录: |--uglifyJS |--js |--test1.js |--test2.js |--uglify.js   //这…