龙空技术网

一分钟复习-JavaScript基础语法(2)

小小de笑 114

前言:

现在朋友们对“js正则冒号”可能比较讲究,兄弟们都需要了解一些“js正则冒号”的相关知识。那么小编也在网摘上汇集了一些有关“js正则冒号””的相关知识,希望朋友们能喜欢,同学们一起来了解一下吧!

表达式、运算符

表达式是JavScript中的一个短语,Javascript解释器会将其计算出一个结果。常量、变量都是一种简单的表达式,复杂表达式是由简单表达式组成的。

原始表达式是最简单的表达式,是表达式的最小单位,它们不再包含其他表达式。JavaScript中的原始表达式包含常量或直接量、关键词和变量。

1.23        // 数字直接量"hello"     // 字符串直接量/pattern/   // 正则表达式直接量

对象和数组的初始化表达式实际上是一个新创建的对象和数组。数组初始化表达式是通过一对方括号和其内由逗号隔开的列表构成的。对象初始化表达式和数组初始化表达式类似,由花括号替代了方括号,并且每个子表达式都包含一个属性名和一个冒号作为前缀。

[]                              // 空数组[1+3,3+5]                       // 拥有两个元素,第一个4,第二个8[[2,54],[3+5,78]]               // 支持嵌套var a = [3,,,,2]                // 数组长度5,中间三个默认为undefinedvar b = { x:1, y:2 }            // 对象定义var c = {}c.x = 2; c.y = 3;               // 定义空对象,并且给对象的x、y属性赋值var d = { x:{x:1, y:2}, y:{}}   // 支持嵌套

函数定义表达式,定义一个JavaScript函数,表达式的值是这个新定义的函数。

var func = function(x) { return 2*x }

属性访问表达式,能够等到一个对象的属性值或者是一个数组的元素的值。

var a = {x:1, y:2}a.xvar b = [] 

调用表达式是一种调用(或是执行)函数或方法的语法表示。

f(0)                // f是一个函数表达式,0是一个参数表达式Math.max(x,y,z)     // Math.max是一个函数,x、y、z是参数a.sort()            // a.sort是一个函数,他没有参数

对象创建表达式创建一个对象并调用一个函数初始化新对象的属性。

new Point(2,3)

运算符

“+”、“-”,一元运算的“+”可以把操作数转换成数字,二元运算的“+”可以进行数字或是字符串操作,一元运算的“-”可以把操作数转换成数字后改变成相反值,二元运算的“-”可以进行数字操作。

var a = +'5'                // => 5var b = 'say' + 'hello'     // => sayHellovar c = -'5'                // => -5var d = 9 - 4               // => 5

“++”递增、“--”递减,对操作数进行加一(减一),如果在操作数左边,则会先操作操作数后返回值。如果在操作数右边,则会先返回值,后对操作数操作。

var i = 1, j = ++i;     // i和j的值都是2var i = 1, j = i++;     // i是2,j是ivar k = 1, k--;         // k是0

“&”按位与,对整型进行逐位执行布尔与(AND),同时为1,结果才为1。

var a = 0x1234 & 0x00FF // => 0x0034

“|”按位或,对整型进行逐位执行布尔或(OR),有一个为1,结果就为1。

var a = 0x1234 & 0x00FF // => 0x12FF

“^”按位异或,对整型进行逐位比对,如果相同则为0,如果不同则为1。

var a = 0xFF00 ^ 0xF0F0 // => 0x012FF

“~”按位非,对整型进行逐位取反。

var a = ~0x0F // => 0xFFFFFFF0

“<<”左移,将操作数的所有二进制位向左移动0~31之间的整数位,右边填充0,从右往左数超过31位的舍弃。

var a = 7<<2    // => 28

“>>”带符号右移,将操作数的所有二进制位向右移动0~31之间的整数位,左边填充0,从左往右数超过31位的舍弃。如果原来是正数,最高位为0,如果原来是负数,最高位为1。

var a = 7>>1    // => 3var b = -7>>1   // => -4

“>>>”无符号右移,将操作数的所有二进制位向右移动0~31之间的整数位,左边填充0,从左往右数超过31位的舍弃。

var a = -1>>>4    // => 0x0FFFFFFF

“==”等于、“===”恒等于、“!=”不等于、“!==”恒不等于,“==”、“===”都是判断左右两边的操作数是否相等,但是“===”更为严格。“!=”、“!==”的结果是对“==”、“===”取反。

“==”等于

1 == 2              // => false1 == '1'            // => true:会先把右边的转型成整型,再进行比较null == undefined   // => trueNaN === NaN         // => false:NaN不等于任何东西,即使是自己也不相等true == 1           // => true:会把左边的true转型成整型1,false则为0class a{    toString(){        return 1    }    valueOf(){        return -1    }}var b = new a()console.log(b>0)// 对象和数字字符串比较,会两边转型成整型,对象转成原始类型,会依次调用valueOf(),如果得不到,接着会调用toString(),还不行则为false。

“===”恒等于

1 === 2                 // => false1 === '1'               // => false:类型不相等,即使转型后相等也是不相等

“<”小于、“>”大于、“<=”小于等于、“>=”大于等于,比较左右两边值大小,支持整型、字符串比较大小。

var a = 7a > 6a < '4'a >= 15a <= 88

“in”存在,判断右边的对象的属性名中,是否存在左边的字符串(或是可以转换成字符串)同名的属性。

var point = { x:1, y:2 }    // 定义一个对象"x" in point                // => true:对象有一个名为"x"的属性"z" in point                // => false:对象不存在名为“z”的属性var data = [5, 6, 7]        // 拥有三个元素的数组"0" in data                 // => true:数组中存在0数组下标1 in data                   // => true:数组中存在1数组下标3 in data                   // => false:数组中不存在3数组下标

“instanceof”类型比较,比较左边对象的类型是否是右边指定的类型。

var a = new Date()a instanceof Datea instanceof Object     // => true:所有对象都是Object实例a instanceof Number     // => false

“&&”逻辑与,把左右两边的表达式计算出结果后,并转型成布尔型,只有左右同时为true的时候,才能返回true。

true && false   // => false(1>0) && (0<1)  // => true

“||”逻辑或,把左右两边的表达式计算出结果后,并转型成布尔型,只有左右存在一个或是以上的true的时候,才能返回true。

true || false   // => true(1<0) || (0>1)  // => false

“!”逻辑非,把右边的表达式计算出结果后,并转型成布尔型,然后对布尔型结果取反。

!true   // => false!(1<0)  // => true

“=”赋值,把右边的值赋予左边的变量。

var a = 2var b = 1a+=b        // 等价于a=a+ba-=b        // 等价于a=a-ba*=b        // 等价于a=a*ba/=b        // 等价于a=a/ba%=b        // 等价于a=a%ba<<=b       // 等价于a=a<<ba>>=b       // 等价于a=a>>ba>>>=b      // 等价于a=a>>>ba&=b        // 等价于a=a&ba|=b        // 等价于a=a|ba^=b        // 等价于a=a^b

eval(),只有一个参数,如果传入的不是字符串,他直接返回参数。如果是,则会把字符串当成JavaScript代码进行编译,编译失败返回异常,成功则执行,返回结果。eval()使用了调用它的变量作用域环境。

“?:”,JavaScript中唯一的三元运算,A?B:C,如果A为true,则返回B,反之则返回C。

var a = 1>0?5:3     // => 5

“typeof”,获取操作数的类型对应的字符串。

var a = 1typeof a                // => "number"typeof undefined        // => "undefined"typeof null             // => "object"typeof true             // => "boolean"typeof 1                // => "number":NaN也属于numbertypeof "hello"          // => "string"var b= function(){}typeof b                // => "function"typeof {}               // => "object"

“delete”删除符,用来删除对象属性或者数组元素。

var point = { x:1, y:2}delete point.x"x" in point            // => false:属性已经被删除了var a = [1,2,3]delete a[2]2 in a                  // => false:下标2的元素已经被删除了

“void”,会使程序忽略右边的操作数的返回结果,常见的是放在a标签里面。

<a href="javascript:void window.open()">打开一个新的窗口</a>

“,”逗号运算符,会先计算左边操作数,再计算右边操作数,最后返回右边操作数的值。

var a = 1, b = 2var c = (1,3)           // c = 3

标签: #js正则冒号