zoukankan      html  css  js  c++  java
  • 【学习笔记】JavaScript——变量、常量、保留字、运算符与表达式、语句

    变量、常量、保留字

    变量Variable:一种特殊的标识符(identifier)。存储信息(值或表达式)的容器。

           【与常量Constant相比,变量存储的数据,可根据程序需要而改变;JS中的变量为notype,及弱类型】

           1)命名规则:由Unicode字符串和数字组成。首字符为:字母、下划线、美元符号$。其后的还可用数字。

           2)变量生存期(有效范围):全局(global)变量、本地(local)变量。【变量没有语句块限制】

                  前者用于整个文档中JS代码运行结束止。后者用于函数及其嵌套的子函数中、但不能用于父级或其他函数。

    常量Constant:不变的值。【IE不支持const】

           1) const  constantName  =  value1;

                  常量名首字符为字母或下划线,其后可有数字。 value1为直接量或表达式。

           2)1个const关键字可定义1个或多个常量。

           3)内置常量:JS中Infinity表无穷大的数值,-indinity表无穷小。NaN表非数值。

    保留字:JS中有特殊含义的标识符。不能用于变量命名。

           保留字大多数为关键字Keywords,还有一些为扩展准备而不建议使用的特性关键字(Future Keywords)

     

     

    运算符与表达式

    运算符Operator:操作变量或值。6-40种

           9个算术Arithmetic: + - * / 模% 递增++ 递减-- 正号+ 取反-

                  【addition/subtraction/multiplication/division/modulus/increment/decrement/?/decrement

           1个字符串String:+

           3个逻辑Logical:逻辑与Logical AND && 逻辑或Logical OR || 逻辑非Logical NOT!

           8个比较Comparison:>   <    >=   <=   ==   !=   等同===   不等同!== 【比较运算符在两操作数间比较,返回布尔值

                  【greater than/less than/g t or q/l t or q/equal/not equal/strict equal/strict not equal

                  【==比较时会隐式转换,===比较时不允许转换。

           7个逐位Bitwise:逐位与&   逐位或|   逐位非~   逐位异或Bitwise XOR^ 【2值相同返0,否则1

                                       Left Shift左移<<   带符号右移>>   0补足右移>>>  

                  【逐位运算符 将各进制的操作数转换为32位的二进制数,并逐位/按位进行操作后返回十进制数。

                  【逐位运算符又分为:逐位逻辑运算符、逐位位移运算符。

           12个赋值Assignment:①普通:= ②带操作:+=   -=   *=    /=    %=    &=    ^=    |=    <<=    >>=   >>>=

     

    特殊运算符:12种

           条件conditional:    boolCondition?value1:value2   (JS中唯一的三元运算符)

           逗号comma:(,)JS最简单的运算符,用于分割2个操作数。

           delete:删除成功返回true,否则false。

                  【删除变量:不能删除变量中var定义的变量。删除未定义变量返true。删除后不能访问。

                  【删除对象:不能删除对象中var定义的对象。删除未定义对象返true。删除后不能访问。

                  【删除对象属性:删除不存在属性返true。返问已删除/不存在对象属性返undefined。

                  【删除数组元素:不管是否var定义都能删除。删后数组长度不变。删后元素仍能访问,值为undefined

           in:判断某属性/元素是否属于某对象/数组。 propNameOrNumber  in  objectName

                  【propNameOrNumber为属性名时,是字符串或能转为字符串的类型。

                  【propNameOrNumber为数组的下标时,是数字型或能转为数字型的类型。

           instanceof:判断对象是否为某对象类型。  objectName  instanceof  objecrType

                  【objectName为对象名。objectType为对象类型,如Date/Arrayr等。Object是所有对象的类型。

           new:一元。创建自定义/内置对象。如Array、Boolean、Function、Image、Option、RegExp等。

                         objectName = new objectType(param1  [,param2]  ….  [paramN] )

           this:可在一个方法中调用当前对象。this  propertyName

           typeof:一元。返回字符串 表示操作数类型。typeof operand、typeof (literal)  

                  【对直接量:返回结果类似变量。

                                typeof([1,2,3])                                          返object

                                typeof({height:10,20})            返object

                                typeof(function(a) {return -a})        返function

                  【对关键字:null返object。undefined返undefined。

                  【对对象属性:返回结果,与属性值相关。typeof( location.host )返string。typeof( Math.PI )返nunber

    ※ 操作数为JS 核心对象(Array/Boolean/Date/Error/Function/Number/String/Object等),返回function

    ※ 操作数为BOM中的对象/方法(window/navigator/frames/location/history/document/screen),返回object

           void:一元。计算某表达式/执行某方法等,不会有返回值。常用于a链接,打开新窗口而原窗口不变。

           数组元素存取[ ]:二元。可读写数组元素值。get = array[ number ]     array[ number ] = set

                                              对象可看成一个数组:get = object[ propretyName ]  object[ propretyName ]=set

           函数调用( ):操作数有传递参数决定。用于调用函数/对象方法。

           对象存取 .:二元。可读写对象属性。get = objecct . proprety;   object . proprety = set;

    操作数Operant:运算符处理的数据。

           由操作数个数,运算符分一元Unary、二元Binary和三元Ternary。【在JS中只有条件运算符是三元运算符】

     

    表达式Expression:可为直接量、变量、常量、也可以是(运算符、操作符和标点符号)组成的语句。

           【直接量:值(如:1233、“abc”、true、[1,2,5]、{100,height:200} ….)】最后1个为对象直接量

     

     

    语句

    5类:选择语句、循环语句、跳转语句、异常处理语句、其他语句。

    语句块:JS中的作用域是整个函数中,与大括号包围的语句块无关。

    选择语句:2种:   if  、 switch

           if语句、if…else语句、if…else if语句。可嵌套。

           switch语句:在执行多个分支中,优于if语句(if每个分支需检测一次变量值)。

                  ※ switch语句中的case语句,需要一个终止(否则继续执行后面的case语句),如break。

    循环语句:for  、 while  、 do…while  【JS中的循环语句不提供执行分支,而是反复执行

           逗号运算符与for语句结合:for(var x=0,y=3;x<y;x+=2,++y)

    对象操作语句: for…in 、for each in

    for…in:遍历数组元素对象属性。for( 变量 in 数组/对象 ) { … }

           (while和for…in的变量 在循环语句外 声明)通过将所有 元素/属性 反复赋值给 变量。

           注意:遍历时,若对象存在方法,此语句会将方法赋值给变量。

             对象的大多数未定义的内置属性及覆盖内置属性的方法,将不被遍历。如String的length属性和replace()方法

             再循环体中删除的属性,将不被遍历。

     with语句:用于简化引用代码。

     

    跳转语句:label语句、break语句、continue语句。

           跳转语句必须放在循环体中。故lable语句需放在循环语句之前才有作用。

           label语句语法:lableName:

           break语句语法:break;或break lable;不能跳转到其他循环语句前的lable中。

           continue语句:只能跳出当前循环

     

    异常处理语句:throw语句(抛出)、try…catch语句(捕获)、finally语句。

           几个概念:异常exception:表出错的信息。抛出throw:表异常状况的信息。捕捉catch:处理抛出的异常。

           异常类型:

    JS

    异常

    Error:

    普通异常。

    EvalError:

    使用eval()出错。

    RangeError:

    数字超合法范围。

    ReferenceError:

    读取不存在变量。

    SyntaxError:

    语法错误。

    TypeError:

    类型错误。

    URIError:

    URI编码或解码出错。

    DOM异常

    DOMException

    DOM对象异常。

    EventException

    :事件异常。

    RangeException

    :范围异常。

     

           throw语句:可抛出异常对像或其他类型对象。如throw new Error(“出错了”);或throw -1;或tw“xx”;

           try...catch语句:try statement  catch(ex) statemrnt【变量ex为throw抛出的Error对象。

           finally语句:不能单独执行,需与try语句合作。

     

    其他语句:6种。空语句(排版/充当占位符)。注释语句(//或/**/)。var语句(定义变量)。const语句(定义常量)。function语句(定义函数)。return语句(只用于函数体,返回一个值)。

     

  • 相关阅读:
    ASP.NET 2.0 X64 引起的问题
    .net 俱乐部7月份资料下载 .net 开源项目
    用schemaSpy制作数据库文档
    IbatisNet支持2.0的版本Release 发布了
    Introduction to Model Driven Development with AndroMDA
    开放源代码与.NET应用程序平台的性能测试
    sqlserver 2000/2005 Ambiguous column error错误解决办法
    ASP.NET 2.0 中 Web 事件
    使用asp.net 2.0的CreateUserwizard控件如何向自己的数据表中添加数据
    Working with Windows Workflow Foundation in ASP.NET
  • 原文地址:https://www.cnblogs.com/slowsoul/p/2870310.html
Copyright © 2011-2022 走看看