整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

前端入门-JavaScript 操作符

前端入门-JavaScript 操作符

谓操作符,就是用来操作数据值的符号,在JavaScript中包括算术操作符、位操作符、关系操作符和相等操作符。这些操作符可以操作所有类型的数据,比如字符串、数字、布尔值,甚至对象。

一元操作符

所谓一元操作符就是只能对一个数据值进行操作,比如(递增、递减)操作符。

递增、递减操作符是直接借鉴C语言的,它分前置型和后置型。前置就是操作符在要操作的变量之前,后置在变量之后。

如下示例:

// 前置型
let age=20;
++age; // 递增
console.log(age); // 结果输出21
--age;//递减
console.log(age); // 结果输出20

如上面例子,age通过++操作符递增变成21,又通过--操作符递减变成20;上面的操作等同下面的操作:

// 后置型
let age=20;
age=age + 1; // 加1
age=age -1;  // 减1

同理使用后置操作符会得到上面同样的结果,但是前置和后置有区别。前置操作符在语句被求值以前改变,后置是在语句被求值后改变。通过下面的例子看下其区别:

// 前置
let age=20;
let anotherAge=--age + 5;
alert(age); // 输出19
alert(anotherAge); // 输出24

由于前置操作符的优先级和执行语句相等,因此会从左到右依次求值。上面的--age 会先进行递减操作,再继续后面的 + 5 运算,所以结果是24。

// 后置时
let age=20;
let anotherAge=age-- + 5;
alert(age); // 输出19
alert(anotherAge); // 输出25

但是后置的最终结果却是25,因为age-- 使用了递减前的值继续和后面进行+5运算。

如果使用一个加号或减号时,加号代表正值、减号代表负值。

加减乘除操作符

操作多个数据值,比如加减乘除等:

let a=1,b=2;
let c=a + b; // 加
let d=c - a; // 减
let e=d * b; // 乘
let f=e/d; // 除

注意加减乘除主要用来操作数字类型的数据,如果操作数不是数字类型,会先进性强制转换再进行计算,这样结果会不确定。

位操作符

位操作符,是指按内存中的表示的数值位来操作数值,通俗讲就是用来操作二进制的数据。二进制数据都是由0、1组成的,在JavaScript中所有数值都是64位的格式存储,但位操作符不直接在64位的值上进行计算,会先转化成32位后再运算。位操作符有以下几种:

按位非(NOT)

按位非操作符是(~)符号,就是将二进制中每位数值进行反码操作。其规则如下:

操作符

数值

结果

~

1

0

~

0

1

如下示例:

let a=25;
let b=~a;
alert(b); // 输出-26

按位与(AND)

使用(&)符号表示,它有2个操作数,当2个数对应的位都是1时返回1,任何一位是0则返回0。如下规则:

数值1

操作符

数值2

结果

1

&

1

1

1

&

0

0

0

&

1

0

0

&

0

0

示例:

let a=25 & 3;
alert(a); // 输出结果是1

按位或(OR)

用(|)符号表示,同样也是2个操作数。其规则是只要有一位是1其结果就是1,负则结果是0;

数值1

操作符

数值2

结果

1

|

1

1

1

|

0

1

0

|

1

1

0

|

0

0

示例:

let a=25 | 3;
alert(a); // 输出结果是27

按位异或(XOR)

由(^)符号表示,也是操作2个操作数,其当2个操作数的位值相同时返回0,负则返回1。

数值1

操作符

数值2

结果

1

^

1

0

1

^

0

1

0

^

1

1

0

^

0

0

示例:

let a=25 ^ 3;
alert(a); // 输出结果是26

左移

使用(<<)两个小于号表示,这个操作符会将数值每一位向左移动指定位数。如下示例:

let a=2;  // 二进制 10
let b=b << 5; // 二进制的 1000000,十进制64

上面,将二进制10向左移动5位,注意左移会多出5个空位,用0来填充,这样就会得到一个完整的32位二进制数据。

注意,左移不会影响符号位(二进制位中第一位表示数的正负),如-2 向左移5位结果是-64。

有符号的右移

使用(>>)两个大于号表示,会将每位向右移动指定位数,但保留符号位(即正负号标记)。如下示例:

let a=64;  // 二进制 1000000
let b=b >> 5; // 二进制的 10,十进制的2

在移位过程,原数中也会出现空位,只不过这次空位出现在原数值左侧、符号位右侧。空位使用符号位值填充。

有符号的整数,指32位中前31位表示整数的值,第32位表示数值的符号,0正数,1负数。这个表示符号的位就是符号位。

无符号的右移

使用(>>>)三个大于号表示,这个操作会将所有32位都向右移动。对于正数其结果和有符号的右移一样,如下示例:

let a=64;  // 二进制 1000000
let b=b >>> 5; // 二进制的 10,十进制的2

但是负数就不一样了,无符号的右移是以0来填充空位,不像有符号右移使用符号位填充。所以其结果相差很大,如下示例:

let a=-64;  // 二进制 1111 1111 1111 1111 1111 1111 1100 0000
let b=b >>> 5; // 二进制 0000 0111 1111 1111 1111 1111 1111 1110 ,十进制的134217726

布尔操作符

在任何编程语言中,布尔操作符都是非常重要的,它是用来判断逻辑的关键,布尔操作符一共有三种:非(NOT)、与(AND)、或(OR)。

逻辑非

使用(!)感叹号表示逻辑非,其规则就是:

操作符

逻辑值

结果

true

false

false

true

逻辑与

使用(&&)表示,操作两个数,如下示例:

let a=ture && false;

其规则如下:

逻辑值1

操作符

逻辑值2

结果

ture

&&

ture

ture

ture

&&

false

false

false

&&

ture

false

false

&&

false

false

也就是只有当2个数值都是true时其结果才是true。

逻辑或

使用(||)符号表示,也是有两个操作数,其示例:

let a=true || false;

规则如下:

逻辑值1

操作符

逻辑值2

结果

ture

||

ture

ture

ture

||

false

ture

false

||

ture

ture

false

||

false

false

也就是2个操作数中有一个true,结果就是true,负则是false。

注意布尔操作符,不仅仅可以操作布尔类型值,对于其它数据类型同样适用,只不过会先将其它数据类型转换成布尔值,再进行布尔运算。如下示例:

let a=!1; //  输出false
let b=!'string'; // 输出false
let c=1 || 0; // 输出true
let e=1 && 0;// 输出false
let d=''&& 2; // 输出true

关系操作符

关系操作符用来比较2个操作数,有小于(<)、大于(>)、小于等于(<=)和大于等于(>=)。其比较的结果返回一个布尔值,true或false。

如下示例:

let a=5 > 3; // true
let b=5 < 3; // false

同样,关系操作符也可以适用其它类型的数据,比如字符串比较大小时,会按照字符的编码大小比较。如下示例:

let a="Brick" < "alphabet"; // true,

上面中因为B字符编码是66,a的编码是97,所以返回true。

相等、不等操作符

在编程中,确定2个值是否相等是一个非常重要的操作。在JavaScript中分相等(==)和全等(===)、不等(!=)和不全等(!==)四种。

相等(==)和不相等(!=)

如下示例:

let a=1==1; // true
let b=1==0;// false
let c=1!=1; // false
let d=1!=0; //true

注意相等和不相等的操作前会先对操作性进行强制转换,如下示例:

let a=true==1; // 先将true转换成1再比较,结果是true
let b=false==1; // 先将false转换成0再比较,结果是false

全相等(===)和不全相等(!==)

全等和不全等不同之处是,它在比较数据前,不进行数据类型转换,是对原始数值比较,所以它的结果更加严格准确,如下示例:

let a=1===1; // true
let b=1==='1';// false
let c=1!==1; // false
let d=1!=='1'; //true

注意和之前相等和不相等的例子比较,其结果非常不一样。

赋值操作符

使用(=)表示赋值操作,其作用就是把等号右侧的值赋值给左边的变量或属性,如下示例:

let a=10; // 给a变量赋值10

如果在等号前面加上其它操作符,就组成了复合型赋值操作,如下示例:

let a=10;
a +=5; // 结果是 15

上面的等同于下面:

let a=10;
a=a + 5; // 结果是 15

当然也可以使用其它操作符,如(*=)、(/=)、(%=)、(-=)、(<<=)等等。

条件操作符

也称三目运算符,它是一种简便的条件运算,可以把它看成是if else的简化,其语法如下:

变量=布尔表达式 ? true_value  : false_value

先求出问号前面的布尔表示结果,如果是true,变量使用冒号前面的值,负则使用冒号后面的值。如下示例:

let a=5 > 3 ? '好' :  '不好'; // 结果是 '好'

逗号操作符

使用(,)符号,表示可以执行多个操作,常用于变量定义或函数参数,如下示例:

var a=0,b=1,c=2; // a、b、c使用逗号隔开
let a,b,c;

// 函数中的参数a、b、c使用逗号隔开
function test(a,b,c){
	// 函数主体
}
// 调用函数
test(1,2,3)

结论

本节主要讲述了JavaScript中所有的操作符概念,这些都是最基本的知识,需要完全掌握。在平常工作中其中除了位操作符不常用外,其它操作符使用频率很高,尤其是布尔操作符,算术操作符,比较操作符等。

本篇只是大概讲述了操作符的概念和使用方法,还有一些细节没有讲到,作为入门课程已经足够了,你可以自己搜索每个知识点详细内容,比如关于二进制数据、位操作、数据类型强制转换等,这里不再详细介绍。

参考资料:

《JavaScript 高级程序设计》

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript

https://www.w3cschool.cn/javascript/js-operators.html

、 结构

一、标记<Html> 建立HTML文档

<Head> 设置网页头部和其它信息

<Body> 设计文件格式及内文所在<Body> 元素的属性

Text 设置页面文字的送顔色 Bgcolor 设置页面背景的顡色

Background 设置页面的背景图像 Link设置页面黙认的顔色

Bgproperties 设置页面的背景图像为固定,不随页面的滚动而滚动

Alink 设置鼠标正在单击时候的链接顔色 Vlink 设置访问过后的链接顔色

Topmargin 设置页面的上边距 Leftmargin 设置页面的左边距

二、头部

标记 <Base> 当前文档的URL全称 <Title>设置显示在浏览器在上方的标题内容

<Isindex> 表明该文档是一个可用于检索的网关脚本

<Meta> 有关文档本身的信息,例如用于查询的关键词,用于获取该文档的有效期等

<Style> 设置CSS层叠样式表的内容

<link> 设置外部文件的链接 <script> 设置页面中程序脚本的内容

<Mate> 标记属性

Http-Equiv 生成一个HTTP标题域,它的取值与另一个属性相同,

例如Http-Equiv=Expires,实际取值由Content确定

Name 如果元数据是以关键字/取值的形式出现的,Name 表示键字,

如Author或ID

Content 关键字/取值的内容

三、文字

文字标记 <HNumber>……<1HNumber> Number=1.2.3.4.5.6

分别指1至6级标题

<Font>文字

文字的修饰标记 <B>/<strong> 粗体 <I>/<Em>/<cite> 斜体

<Sup>上标 <sub>下标 <Big>大字号 <small>小字号

<U>下划线 <S>/<strike>删除线 <Address>地址

<Tt>打字机文字 <Blink>闪烁文字(只适用于Netscape浏览器)

<Code>/<samp>等宽 <kbd>键盘输入文字 <Var>声明变量

<Fant>标记的属性

Face 字体 Size字号 Color顔色

四.列表

列表标记 <Ul>无序列表 <Ol>有序列表 <Dir>回录列表 <Dl>定义列表

<Meru>菜单列表 <Dt>·<Dd>定义列表的标记 <Li>列表项目的标记

<Ul><Ol>标记的属性 Type设置列表类型 start设置列表起始属性

Type的属性值 1 数字 a 小写字母 A 大写字母 i小写罗马数字

I 大写罗马数字 Disc ● Circle ○ square □

五.链接

链接标记 <A> 链接

<A>标记的属性 Href 指定链接地址 Name给链接命名

Title设置链接提示文字 Target指定链接的目标窗口

Target属性值 -parent在上一级窗口中打开。一般使用分帧的框架页会经常使用

-bank在新窗口中打开

-self在同一个帧或窗口中打开.这项一般不用设置

Href属性值 http:// 进入万维网站点 news://启动新闻讨论

ftp:// 进入文件传输服务器 mailto:// 启动新闻讨论组

telnet:// 启动telnet方式 gopher://访问一个gopher服务器

六.图片

图片标记 <Img>图片 <Map>图像映射 <Area>图像映射中定义区域

<lmg>标记的属性 src图像的源文件 Alt提示文字 Width宽度

Height高度 Vspace垂直间距 Hspace水平间距 Align排列 Border边框

Align属性值 Top文字的中间线居于图片上方 Middle文字的中间线居于图片中间

Bottom文字的中间线居于图片底部 Left 图片在文字的左侧

Right图片在文字的右侧 Absbottom文字的底线居于图片底部

Absmiddle文字的底线居于图片中间 Baseline英文文字基线对齐

Texttop英文文字上边线对齐

Shape属性值

Rect矩形区域 Circle椭圆形区域 Poly多边形区域

七.表格

1.表格标记 <Table>…</Table>表格标记 <Tr>…</Tr>行标记

<Td>…</Td>单元格标记 <Th>表头标记

<Table>标记属性 Bordercolor 表格边框色 Borde表格边框的宽度

Bordercolorlight 表格边框亮边框色(左上边框顔色)

Bordercolordark 表格暗边框色(右下边框顔色)

Bordercolor 行的边框顔色 Width表格的宽度 Height表格的高度

Bgcolor表格的背景顔色 Background表格的背图像

<Tr>标记属性 Align行内容的水平对齐 Valign 行内容的垂直对齐

Bgcolor 行的背景顔色 Background 行的背景图像

Bordercolor 行的边框顔色 Bordercolorlight 行的亮边框顔色

Bordercolordark 行的暗边框顔色

<Td>标记属性 Align单元内容的水平对齐 Valign单元格内容的垂直对齐

Bgcolor 单元格的背景顔色 Background 单元格的背景图像

Bordercolor单元格的背景顔色 Bordercorlorlight单元格的亮边框顔色

Brodercolordark 单元格的暗边框顔色 Width 单元格的宽度

Height单元格的高度

<Th>标记属性 Align表头内容的水平对齐 Valign表头内容的垂直对齐

Bgcolor 表头的背景顔色 Background表头的背景图像

Bordercolor表头的边框顔色 Bordercolorlight 表头的亮边框顔色

Bordercolordark 表头的暗边框顔色 Width 表头的宽度 Height 表头的高度

八.表单

1.表单标记 <Form>表单标记 <Input>表单输入标记

<select>菜单和列表标记 <Option>菜单和列表项目标记

2.属性 <Form> Name表单的名称

Method 定义表单结果从浏览器传送到服务器的方法,一般有两种方法:get,post

Action 用来定义表单处理程序(一个Asp,CGI等程序)的位置(相对地址或绝对地址)

<lnput>标记属性 Name 域的名称 Type域的类型

Maxlength 域的最大输入字符数 size域的宽度 Value 域的默认值

<Select>标记属性 Name 菜单和列表的名称 size 显示的选项数目

Multiple 列表中的项目多选 Value 选项值 selected默认选项

<Texrarea>标记属性 Name 文字域的名称 Rows文字域的行数

Cols 文字域的列数 Value 文字域的默认值

Type属性值 Text 文字域 Password 密码域 File 文件域

Checkbox复选框 Redio单选框 Button普通按扭

Submit 提交按钮 Reset重置按钮 Hidden隐藏域Image图像域

九.滚动

滚动标记 <Marquee>

<Marquee>标记属性 Direction 滚动方向 up 文字向上滚动 Left文字向左滚动

Behavior 滚动方式 Scroll 循环往复

Side 只做一次滚动

Alternate 交替进行滚动

ScrollAmount 滚动速度

ScrollDelay 滚动延迟

Trim函数用来剔除首尾空格

十.框架

1.标记 <Frameset> 框架边框标记 <Frame> 框架标记 <Iframe>浮动框架标记

<Frameset>标记属性 Cols列 Rows行

<Frame> 标记属性 src框架中显示页面源文件的路径

FrameBorder 框架边框显标属性 FrameSpacing框架边框宽度属性

Scrolling框架滚动条显示属性 NoResize 框架尺寸调整属性

BorderColor 框架边框顔色属性 MarginWidt 框架边框缘宽度属性

MarginHerght框架边缘高度属性

<1frame> 标记属性 src浮动框架中显示页面源文件的路径

Width 浮动框架的宽度 Height 浮动框架的高度

Name 浮动框架的名称

Align 浮动框架的排列方式 Left表示居左 Center表示居中 Right表示居右

FrameBorder 框架边框显示属性 FrameSpacing 框架宽度属性

Scrolling 框架滚动条显示属性 ( yes显示 No不显示 Auto根据页面的长度自动判断是否晶粒示滚动条

NoResize 框架尺寸调整属性 BorderColor框架的顔色

MarginWidth 框架边缘宽度属性 MarginHeight 框架边缘高度属性

插入刷新

步骤:1.选择"查看/文件头内容"

2.在插入面板上,打开HTML选项卡

优化代码

打开文件窗口,执行"命令、清理HTML"命令

文本换行:Enter 行距较大

Enter + Shift 行距较小

插入水平线设置顔色:单击属性面板中的快捷标签编辑器按钮

在代码中键入"color=#顔色值"

当图像无法显示时将显示这段文字:

图像属性中的替代→输入文字

插入鼠标经过图像:准备两张图像

在文件窗口中,将光标放置于需要翻转图像位置→插入工具栏中单击鼠标经过图像

Ⅱ.使用导航条:

在"常用"对象组中,单击"图像"小三角→导航条

插入图像占位符:图像小三角→图像占位符

Flash动画的背景实现透明 参数wmode 值 transparent

插入 Java Applet

插入表单

插入表单域:对象面板上"表单"→插入表单

插入文本域:单击面板上的插入文本域. 初始值=打开时显于的文字

插入密码框:在属性面板上选择密码

插入多行文本域:在类型后选择多行

插入隐藏域:对象面板→插入隐藏域

插入按钮:标签用来设置按钮上显示的文本

插入图像提交按钮=图像域:

插入文件上传按钮=文件域:

插入单选框

插入单选按钮组:Label文字说明 Value 单选按钮的值

插入复选框

菜单/插入列表:列表值→

插入跳转菜单:(

制作网页链接

URL统一资源定位器

目标:_blank在一个新的未命名的浏览器窗口中打开

_parent如果是嵌套的框架,链接会在父框架或窗口中打开,否则=_top

_top在完整的浏览器中打开

创建搜索页

运行中输入:

Inetmgr (IIS

Odbcad32 (odbc

Asp对象

Applicatipn 在给定的应用程序的所有用户间共享信息,并在服务器运行期间持久地保存数据。

集合: Contents

staticObjects

Item(变量值)=设置资料变量的值

Key(变量名称)=设置资料变量的名称

Count(变量资料的数量)=表示

Coutents集合中资料的总数量

方法: Lock

Unlock

事件: Applicatipn_Onstart

Application_OnEnd

Session 存储特定的用户会话所需的信息

属性:CodePage

LCID

SessionID

Timeout

集合:Contents

StaticObjects

方法:Abandon

事件:Session_Onstart

Session_OnEnd

Response 用来控制发送给用户的信息,包括直接发送信息给浏览器,重定位浏览器到另一个URL或设置Cookie值

属性: Buffer

CacheControl

Charset

ContentType

Expires

ExpiresAbsolute

IsClientConnected

PICS

Status

集合: Cookies

方法: AddHeader

AppendToLog

BinaryWrite

Clear

End

Flush

Redirect

Write

Request 访问任何基于HTTP请求传递的信息,常见的有从HTML表单用Post方法或Get方法传递的参数,Cookie或用户认证等。

属性: TotalBytes

集合: ClientCertificate

Cookies

Form

QueryString

ServerVaiables

方法: BinaryRead

Server 提供对服务器方法和属性的访问

属性: ScriptTimeout

集合: 无

方法: CreatObject

HTMLEncode

MapPath

URLEncode

Recordset

MoveNext 将前数据记录移至下一条

MovePrevious 将当前数据记录移至上一条

MoveFirst 将当前数据记录移至第一条

MoveLast 将当前数据记录移至最后一条

AbsolutePosition=N 将当前数据记录移至第N条

EOF 当前数据记录是否移过了最后一条(发生于向下移动时)

BOF 当前数据记录是否移过了第一条 (发生于向上移动时)

VBScript 运算符

算术运算符

指数 取负 乘法 除法 加法 减法 取模 连接 整数除法

∧ - * / ﹢ ﹣ Mod & \

比较运算符

相等 不相等 小于 大于 小于或等于 大于或等于 对象相象

=<> < > <=>=IS

逻辑运算符

逻辑非 逻辑与 逻辑或 异或 逻辑等于 逻辑蕴含

Not And Or Xor Eqv Imp

是一个朋友前天刚接触这个行业不久问我的一个问题,我网上也查了一些,看了下代码,不喜欢;所以

自己动手做了这个小demo;希望大家可以借鉴一下

首先页面布局:其中最主要的是对类wrapper设置position:relative;overflow:hidden;

类items设置:position:absolute等属性;

接下来就事分析如何轮播:

我的思路是:点击下一页的时候:items的animate向左移动

animate({"marginLfet":"-800px"},1000,function(){});其中function({})里执行的方法:

首先将item-1放到$(".items li")最后面,然后items({marginLeft:0})

【一开始在想,将item-1追加到$(".items li")最后面之后,那么一开始item-1是不是要移除掉呢,

然后我观察了下一页的方法执行后的页面元素,才发现这个担心是多余的】

下面是执行下一页之后的页面元素:

【大家发现了没有,第一个li元素跑到最后面了,然后接下来点击上一页的时候,我们只需要取最后一个li元素就行了】

思路:点击上一页的时候,items的css向左移动({"marginLfet":0}),然后$(".items li").eq(3)放在items第一个位置里,然后动画aniamte({"marginLeft":0},1000);

这时候大家脑补一下:items的css向左移动({"marginLfet":0})和$(".items li").eq(3)[即item-1]放在items第 一个位置里都是瞬间完成,人眼是看不出来的;所以再之后执行aniamte({"marginLeft":0},1000)时候,发现item-1慢悠悠从左侧出来

js代码如下:

接下来就是定时器了:自动轮播

【timer一定去做下判断,不然会导致连续点击的时候,图片移动会越来越快】

还有最后一个setTimeout这个:在点击上下一页的时候,我会清除定时器,所有我会在其事件里添加它,然后三秒之后再执行show(),自动轮播;

最后点击事件:

总体页面展示: