网站建设推广内容,山东做网站建设的好公司,福州seo计费,linux网站建设1、运算符的表示以及优先级 Javascript#xff08;以下简写为Js#xff09;的大部分运算符与C或Java是类似的。 记得刚学C语言时老师讲的优先级口诀#xff0c;非常好记#xff1a;“括、单、算、移、关”“位、逻、条、赋、逗”#xff0c;此处也可以套用一下#xff0c…1、运算符的表示以及优先级 Javascript以下简写为Js的大部分运算符与C或Java是类似的。 记得刚学C语言时老师讲的优先级口诀非常好记“括、单、算、移、关”“位、逻、条、赋、逗”此处也可以套用一下便于记忆。 1标点符号表示比较普遍略。 2用关键字表示和一般的运算符一样都是正则运算符只是更具有可读性此处详细列出几个。 delete用于删除指定的对象的属性、数组元素或变量结合性R运算数类型lvalue typeof用于返回数据类型结合性R运算数类型任意 void用于返回未定义的值结合性R运算数类型任意 以上三个属于一元运算符也叫单目运算符即口诀中的“单”运算数只有一个 instenceof用于检查对象类型结合性L运算数类型对象构造函数 in用于检查对象的某个属性是否存在结合性L运算数类型字符串属性名对象 以上两个属于关系运算符即口诀中的“关” 注意 lvalue上面提到运算符delete的运算数类型是lvaluelvalue指的是能够合法出现在一个赋值表达式左边的表达式。Js中变量、对象的属性、数组的元素都是lvalue型的 结合性associativity一元运算符、赋值运算符、三元条件运算符结合性是R从右到左进行运算。 2、部分运算符的使用说明 如果运算数非数字则运算前都会先尝试将其自动转换为数字这是算术运算过程中的通用特性。 1除法运算符/ Js中所有数字都是浮点型这一点跟区分整数和浮点数的程序语言不同如5/2结果是2.5而不是2 除数为0的结果是正无穷大Infinity或者负无穷大-Infinity而0/0结果则是特殊值NaN 2模运算符% 取模运算通常都是整数但Js中也适用于浮点数如-4.3%2.1-0.1 3、和 为了区别可将“”读作“得到或赋予”“”读作“等于”“”读作“完全等同”。 与用于比较两个运算数是否相等 相同点 Js中数字、字符串、布尔值使用的都是值value比较值相等则相等或等同。 比较对象、数组、函数时使用引用reference若两个变量引用同一个对象则两变量才相等。也就是说两个数组无论如何也不会相等即使他们存放的元素完全相同。 NaN不与任何一个值包括NaN本身相等或等同检测一个值是否是NaN可用全局函数isNaN()。 不同点 类型不同则不等同类型不同仍然可能相等 如一个是null一个是undefined则两者相等 若两者转换后的值value相等则返回true 若一个是对象另一个是数字或者字符串则会先将对象转换为原始类型的值。Js核心语言内部通常先尝试valueof()转换再尝试toString()转换但是对于Date类则先执行toString()转换。4比较运算符 比较运算符只能在数字或字符串上执行所以不是数字或字符串的运算数将会先转换成数字或字符串。 当字符串与数字比较时先转换成数字再执行数字比较。 5in 运算符 二元运算符要求左边运算数是一个字符串或可以转化为字符串右边运算数是一个对象或数组。 如果左边字符串是右边对象的一个属性名则返回true 6instenceof 运算符 二元运算符要求左边运算数是一个对象右边运算数是对象类的对象名。 如果左边的对象是右边对象名的一个实例则返回true 7逻辑、||、 常用于执行布尔代数另外 “||” 也可以这么使用var maxwidth||height||500;这一用法通常是选取一组备选值中第一个定义并且非空的值。 “”对任何值x应用两次都可以将该值转换为一个布尔值。 8typeof 运算符 一元运算符返回运算数的类型 若运算数是数字、字符串或布尔值返回“number”、“string”或“boolean” 若运算数是对象、数组或null返回“object”运算数是Number、String或Boolean这样的包装对象时也返回“object” 若运算数是函数返回“function” 若运算数是未定义的返回“undefined”。 由此可见typeof不能区别两种不同的对象类型若要区别须使用其他方法如使用 instenceof 运算符或 constructor 属性Object.constructor后面介绍。 9delete 运算符 一元运算符删除指定的对象的属性、数组元素或变量删除成功则返回true删除失败返回false。 一些例子 script typetext/javascriptn 123;var p { x: 1, y: 2 };document.write(delete n); //truedocument.write(delete p.x); //true删除对象p的属性xdocument.write(typeof p.x); //undefined属性x已经被删除不再存在document.write(delete p); //falsevar语句声明的变量不能被删除document.write(delete o); //true o不存在document.write(delete a); //true ECMAScript标准规定若delete的运算数不是属性、数组、或变量时返回true
/script 注意delete影响的只是属性值并不影响被这些属性引用的对象。 var o new Object();
o.e1 new Date(); //属性e1是对对象Date()的引用
o.e2 o.e1; //属性e2也是对Date()的引用
delete o.e1; //只删除o的属性e1对Date()对象没有任何影响。
document.write(o.e2); //e2属性此时仍然引用Date()对象 10数组和对象的存取运算符——“[]”和“.” “.”要求左边运算数是一个对象右边运算数是一个标识符即对象的属性名或方法的直接量名。若该对象中没有指定的属性则返回undefined “[]”用于存取数组元素也可用于存取对象的属性。 注意当“[]”用于关联数组时由于属性名动态生成所以不能使用运算符“.”只能使用“[]”。 例如在使用for/in遍历对象属性时for(f in o){ document.write(o[f]);} 不能使用o.f此处f只是变量而不是o的标识符。转载于:https://www.cnblogs.com/gppblog/archive/2010/01/11/1644123.html