JavaScript基本概念(操作符,语句,函数)

操作符包括算术操作符、位操作符、关系操作符、相等操作符。操作符一般用于数值型,如果不是数值型会被转换成数值型,对象会先调用valueOf(),不能计算的话,调用toString()

一元操作符

只能操作一个值的操作符叫做一元操作符

递增和递减操作符

前置和后置的自增和自减操作符
++ --
不展开了
非计算值的操作举例

var s1 = "2"
var s2 = "z"
var b = false
var f = 1.1
var o = {
  valueOf:function(){
    return -1;
  }
}

s1++ //3
s2++ //NaN
b++ //1
f-- //0.100000000000009
o--//-2
一元加减操作符

+放在数值前面没有影响,放在非数值前会使用Number()转成数值
-用于表示负数,放在非数值前会使用Number()转成数值

位操作符

ECMAScript中数值都是以64位存储,但位操作符不直接操作64位值,会先转换成32位,然后计算,然后再转换回64位。
对于有符号的整数,32位中前31位表示数值,第32位表示符号位,0为正数,1为负数。18的二进制表示00000000000000000000000000010010,或者10010。负数也以二进制码表示,但是负数使用的是补码。计算补码的步骤为:

  • 求数值绝对值的二进制码
  • 求得到的二进制码反码
  • 反码加1

-18 的计算机二进制表示
绝对值的二进制码:0000 0000 0000 0000 0000 0000 0001 0010
反码:1111 1111 1111 1111 1111 1111 1110 1101
加1:1111 1111 1111 1111 1111 1111 1110 1110
处理有符号整数时,位31不能访问,位31就是第32位
默认ECMAScript中,整数都是有符号整数,当然也有无符号整数,无符号整数都是正数,范围更大。
64->32->64,这种方式的处理会导致副作用,NaNInfinity应用位操作时,会被当做0处理
1、按位非(NOT)
~0110
25求反-26 -26求反25
按位非的本质:操作数的负值-1(和计算机中负数的表示法有关)
2、按位与(AND)
&1&111&000&00
3、按位或(OR)
|1|111|010|00
4、按位异或(XOR)
^,相同为0,相反为1
5、左移
<<,左移不移符号位,左移n位,数值扩大2的n次方
6、右移
>>,此种右移也不移符号位,右移n位,数值缩小2的n次方
7、符号右移
>>>,此种右移会移动符号位,由于移位操作符都是以0作为填充,所以负数(符号位用1表示)符号右移会变成正数,同时符号右移越小,数值越巨大。正数符号右移,和正常的右移相同

布尔操作符

又叫逻辑操作符,有与或非

!falsetruetruefalse,可以应用于任意类型,会先将值转换成boolean类型。转换规则如下:

&&,真真为真,真假为假,假假为假

||,真真为真,真假为真,假假为假

乘性操作符

乘法
除法
求模

加性操作符

加法
减法

关系操作符

小于(<),大于(>),大于等于(>=),小于等于(<=)

相等操作符

相等和不相等
全等和不全等

三目运算符

?:

赋值操作符

逗号操作符

语句

if语句
do-while语句
while语句
for语句
for-in
label
break continue
with
switch

以上东西太繁琐,以后慢慢补充

函数

语法

function 函数名(参数表){
函数体
}

函数不必指定返回值类型,可以用return返回任意值
函数示例

function abc(a,b,c) {
    alert(a+b+c)
}
abc(1,2,3)

只写return,不写值,会返回undefined,不写return,也会返回undefined

函数参数

ECMAScript函数参数其实是一个数组,名为arguments,函数调用不必完全遵循函数定义,可以传多个参数,也可以不传任何参数。arguments其实只是与数组类似,因为支持下标语法。比如按照参数传入顺序依次取值,arguments[0]arguments[1]arguments[2],使用length属性确定参数个数。

function abc(a,b,c) { 
  alert(arguments[0]+arguments[1]+arguments[2])
}
abc(1,2,3)

不按函数原型调用

function abc() { 
   alert(arguments[0]+arguments[1]+arguments[2])
}
abc(1,2,3)

函数不支持重载,但是我可以使用一些手段实现函数重载

function doAdd() {
    if(arguments.length == 1){
        return arguments[0] 
     }else if(arguments.length == 2){
        return arguments[0] + arguments[1]   
     }else if(arguments.length == 3){  
        return arguments[0] + arguments[1] + arguments[2]
  }
}
alert(doAdd(1))
alert(doAdd(1,2))
alert(doAdd(1,2,3))

arguments中的值和参数名的值保持一致

function abc(a) {
    a = 100
    alert(arguments[0])
}
abc(1)

function abc(a) {
    arguments[0] = 100
    alert(a)
}
abc(1)

这并不是说,argumentsa内存是一份,其实是两份,只不过js帮我们让这两个值保持一致了,另外高程上说,修改参数,不会反映到arguments,可是经过试验,这种一致是双向的。
arguments的length属性的长度是由实际传入参数决定的,不是由函数定义决定的。没有传入值的参数会被自动赋值为undefinedECMAScript中的所有参数传递都是值传递,没有引用传递。ECMAScript也不支持函数重载,同名函数会被后一个覆盖。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容