JavaScript学习3-JS基本概念

来源:互联网 发布:淘宝买家超级会员等级 编辑:程序博客网 时间:2024/05/24 03:19
3.1语法
     区分大小写
     标识符:首字母必须是字母、下划线、$符号,默认采用驼峰法大小写格式,跟Java一样命名即可。
 注意:标点符号不要使用汉语,同时不要使用关键字和保留字、null、true、false等用作标识符,浏览器中也有可能 留有关键字,最好用下划线来命名。
     注释://单行注释,/*........*/块级注释
     严格模式:在整个脚本顶部或函数体中添加  "use strict",告知js引擎切换到严格模式 ,严格模式下某些不安全的操作会抛    出错误。ReactNative中每个module就需要切换到严格模式。
3.2变量
      ES是弱类型的,既可以保存任何类型的变量,var来声明变量。
       在函数内省略var来定义的变量是全局变量,用var在函数体内声明的变量在函数退出后就会被销毁。
        var id ='001', 
      name = 'wkj' ,
      age = 100;
       //以上这种定义可读性比较强,最好给变量初始化。
3.3数据类型
     5种基本数据类型:Undefined Null Boolean Number String 
     1种复杂数据类型:Object (对象)
      所有的值最终都属于这6种类型之一。
     <1>typeof操作符
          由于ES是弱类型的,用typeof来检测变量的数据类型
          var message;
  alert(typeof message );
          返回值:
          undefined:值未定义
          boolean:值是布尔值
          string:值时字符串
          number:值是数字
          object:值是对象或null(空的对象引用)
          function:值是函数
     <2> Undefined类型
            使用var声明变量但未对其进行初始化,这个变量的值就是undefined,没有必要将变量显示的设置为undefined,eg:
              var message;
              alert(message==undefined);//true  
             未用var声明的变量,js会报错。
             alert(a);//没有声明a,js报错:a is not defined
             但是使用typeof a ==undefined //true
     <3> Null类型
            由于null值表示的是空对象指针,所以typeof 操作符检测null值的变量时返回object。
            var car = null;
           alert(car);//object
           如果变量将来用于保存对象,最好是将该变量初始化为null,这样只要直接检查null值就可以知道相应的变量是否已经引       用对象。
           实际上undefined派生自null值:
           alert(undefined == null);//返回true
           若保存对象的变量还没有真正的保存对象,那么最好是将该变量初始化为null值。这样不仅可以体现null作为空对象指           针的惯例,也区别了null和undefined,而没有必要显式的设置一个变量为undefined。
     <4>Boolean类型
           true和false
    各种数据类型的值可以通过,Boolean()函数来转换。即:var a = 12;var aboolean = Boolean(a);
            各种数据类型的值转换为boolean的规则:
            数据类型                                  true                                                 false 
   Boolean                                     true      false
           String        非空字符串空字符串""
           Number 任何非零数字(包括无穷大)0和Nan
           Object         任何对象      null
   Undefined 不适用       undefined
   根据这些转换规则,对于控制流语句中的判断,非常重要。
    eg:var a = 'message';
            if(!a){alert('该变量为空或undefied或为null或为0');}
    <5>NUmber类型
          1、八进制:0开头,八进制数字序列(0-7),无效的数字解析为10进制如:var a =090;//解析为90
十六进制:0x开头,十六进制序列(0-f)
                进行算数运算时,最终结果都会转换为十进制来计算.
var a=10.000;//解析为10;
        浮点数最高精度为17位,精确度没有进行处理,以二进制的形式来计算;所以:0.1+0.2==0.3(false).解决方案:
  方法一:该方法由于是四舍五入,所以精确度依然不是很高,对于精确度要求不高的计算结果,可以考虑此方法

   利用js中toFixed()方法,四舍五入parseFloat(4.2+9.4).toFixed(2);

    方法二:先将待计算的数字乘以10的n次幂,换算成计算机能够识别的数值,然后计算的结果再除以10的n次幂。

       最小数值:Number.MIN_VALUE;

       最大数值:Number.Max_VALUE;

       超出范围转换为:infinity(正无穷)-infinity(负无穷)

       判断数值是否在最大和最小之间,可以用isFinity()函数。

NaN:返回数值的操作数未返回数值的情况。NaN==NaN;//false

isNaN():判断是否不是数值

isNaN(‘123’);//false自动转换为数值

isNaN(true);//false  1

isNaN(NaN);//true

              2、数值转换方法

                     <1>Boolean()

                    Boolean:true—1;false---0

                    Null---0

                    Undefined---NaN

                    字符串:

                      只包含数字(包含+-),转换为十进制前导的零会忽略掉。

                      有效的十六进制格式的字符串

                      空字符串或null---0    

                     <2>parseInt()

                 忽略字符串前面的空格,直到第一个非空字符,如果第一个字符不是数字或负号、加号,则返回的是NaN,

所以parseInt()返回的是NaN(Number()返回的是0)

                 如果第一个是数字字符那么直到遇到非空字符为止。

                 所以,parseInt(’22.5’);//22因为.是非数值字符

                 为了解决转换进制的问题: 

                parseInt(a,16);第二个参数为进制数

      <3>parseFloat()

                解析字符串和parseInt()类似,字符串的第一个小数点是有效的,第二个就无效了;该函数只解析十进制值。

<6>String类型

       1、转义字符

             \n:换行

    \t:制表

           \b:空格

          \xnn:十六进制代码nn表示的字符(n:0~f)

           \unnnn:十六进制代码nnnn表示的一个unicode字符

    2、转换字符串

    toString(),null和undefined没有方法。
                        数字进行转换为字符串时,通过传递基数可以进行进制转换。
num.toString(2);//转换为二进制的字符串。
                        String():有toStirng()方法的值和toString()转换一样的值
      null转换为'null',undefined转换为'undefined'
          <7>Object类型
                 Object类型其实就是对象,Object的每个实例都有下列属性和方法
                  Construtor():创建对象的函数--构造函数,对于Object来说就是Object()
                  hasOwnProperty(propertyName):用于检查给定的属性在当前的对象实例中是否存在。
                  isPrototypeOf(object):用于检查传入的对象是否是另一个对象的原型
                  propertyIsEnumerable(propertyName):用于检查给定的属性是否可以使用for--in语句来遍历。
  toLocaleString():返回对象的字符串表示,该字符串与本地环境有关。
  toString():返回该对象的字符串
  valueOf():返回对象的字符串、数值或布尔值。通常与toString()返回值相同。
3.5 操作符
      <1>逗号操作符
     var num1,num2,num3 =3;//声明了三个变量赋值为3
     var num = (1,3,56,5);//num=5
     <2>赋值操作符
   var num = 10;
   num = num+10;
可以用以下语句来代替:
var num = 10;
num +=10;
     <3>条件操作符
  var variable = boolean_expression ? true_value:false_value;
  var a =10; var b =20;
 var max =  (a>b) ? a:b;
    <4> 相等操作符
  ==:比较操作数值,比较前都会进行强制转换为操作数,然后再比较  alert('1'==1);//true  
  ===:全等,再未转化的时候比较,比较的是类型。alert('1'===1);//false
3.6 语句
for in:增强for循环,可以用来循环遍历对象中的属性,ES5之前如果对象为null,遍历时会抛出错误,ES5之后不会抛出错误,不再执行for in语句了,所以再用该语句循环遍历属性时,最好是先判断对象是否为null或undefined。
3.7函数
不要把函数和参数命名为arguments和eval
不要出现两个命名参数相同的情况
         在严格模式下会出现语法错误
     <1>参数
  参数封装在arguments数组中,隐形存在
    <2>没有重载的一说
  ES没有签名,参数是在数组中,真正的重载是不存在的。定义两个名字相同的函数时,后面的会覆盖前面的,通过传入参数类型和数量来判断不同的反应,以此来达到重载的效果。
0 0
原创粉丝点击