• JavaScript03-基本概念一


    js包括:语法、语句、类型、关键字、保留字、操作符和对象。

    语法、关键字、保留字

    1.js中一切区分大小写,包括变量、函数名、操作符;

    2.标识符规则,第一个字符必须是字母、下划线_、或者美元符号,其它的字符则可以或者只能是字母、美元符号、或者数字组成,并推荐采用驼峰式命名,如goodBoy;

    3.语句,所有语句以一个分号结尾,虽然不是必需的,但是为了防止在压缩js代码时因为缺少分号导致语句之间连接出错,同时也为了能省去解析器分析插入分号的时间。在条件控制语句中代码块用花括号{},即使只有一条语句也不应省略,虽然这样不会报错,主要是为了编码清晰;

    4.保留字和关键字,关键字指的是js中已经定义的有特殊用途的字段,比如,return、var等等,而保留字就是未来可能会成为关键字的字段,比如ES3中的class、super等保留字已经成为ES6中的关键字。

    5.变量,ES中的变量属于泛类型,即可以保存任何类型的数据。定义变量:

    var hello;//第一种

    var hello = "Hi!";//第二种

    hello = "Hi";//第三种

    function fn() {

        var hello = "Hi";//第四种

        hello = "Hi";//第五种

    }

     

    第一种,变量定义了但是没有初始化,此方法可取;

    第二种,定义并初始化,此方法可取;

    第三种,是全局变量的定义方式,此方法不可取;

    第四种,局部变量,在函数外无法直接获取,并且在函数退出后会自动销毁,此方法可取;

    第五种,跟第三种其实是一样的,只要函数fn被调用一次,那么全局变量hello在任何地方都能直接获取,并且只有退出当前页面或者手动赋空时才会销毁,此方法不可取;

    第六种,用逗号隔开,一次性定义多个变量并初始化,此方法可取。

    数据类型

    ES中有5种基本数据类型,Undefined、Null、Boolean、Number和String。

    使用typeof操作符检测变量数据类型可以返回下列值:

    "undefined"——值未定义,两种情况,第一种,变量未声明,第二种,变量声明但未初始化,如“var a;”。由于即使时未初始化的变量也会自动赋予undefined,因此,为了区分变量是否已经声明,我们在实际编码的时候应该将变量显式的初始化。这样当我们拿到undefined值时就能识别变量尚未声明。

    "boolean"——布尔值,有两个值,true和false,流程控制语句比如if会自动将括号内的数据转换成Boolean类型,具体的转换规则如下表:

    数据类型

    true false
    Boolean true false
    String 非空字符 ""空字符串
    Number 非零数字包括无穷大 0和NaN
    Object 任何非null对象 null
    Undefined N/A undefined

    "string"——字符串,由0或多个16位Unicode字符组成的字符序列,可以用单引号跟双引号表示。x41 (十六进制)表示"A",u03a3(Unicode)也是表示一个字符,反斜杠还可用于转义字符,表示非打印字符。将其他类型数据转换成字符串的方法toString():

    true.toString(); //'true',布尔类型转为字符串
    var a=10; a.toString(); //'10', 整数转字符串
    a.toString(2);//'1010',括号里面的值指的是以二进制方式转换,也可以是八进制跟16进制,不传值默认是十进制
    //toString()函数不能把null跟undefined类型转字符串,但是可以用String()函数
    String(null);//'null'
    String(undefined);//'undefined'
    //除了上面的两个显示转换成字符串的方法,还有就是加号可以隐式的将其它类型值转为字符串,比如:
    null+'' ;//结果是'null'
    10+'';//结果是'10'

    "number"——数值,十进制、八进制、十六进制,八进制第一位为0然后接着数字(0-7),超过范围则前面的0被忽略转成十进制,十六进制时0x开头。当进行算数运算时都会被转成十进制值。浮点数值示例如下:

    var float1 = 1.1var float2 = 1.0;//解析为1
    var float3 = .1;//不推荐
    var float4 = 1.;//直接解析为1
    var float5 = 1.125e7;//实际含义为1.125乘以10的7次方
    var float6 = 1.125e-7;//实际含义为1.125乘以10的-7次方
    
    //不要用以下的判断,浮点数会产生舍入误差的问题
    if(a+b == 0.3) {
    }

    NaN是一个非数值,在ES中,这个数值表示一个预期返回数值的操作未返回的情况。实际上,整数跟字符串的减法乘法除法会得出NaN,加法除外。NaN跟任何值都不相等包括NaN本身,

    NaN == NaN //false
    //ES中定义了isNaN函数用来检测是否不是数值
    isNaN(NaN);//true
    isNaN(10);//false
    isNaN('10');//false ,可以被转换成10
    isNaN("blue");//true
    isNaN(true);//false,可以被转换成1

    数值转换函数,Number、parseInt、parseFloat,第一个可用于任何数据类型,后面两个专门将字符串转换成数值

    var num1 = Number(true);//1,如果false则转换成0
    var num3 = Number(null);//返回0
    var num4 = Number(undefined);//返回NaN
    var num6 = Number(0011);//11,前面0被忽略
    var num2 = Number(99);//正常返回99
    var num7 = Number(1.1);//1.1,浮点数返回原值
    var num8 = Number(0x11);//17, 16进制的转换为十进制
    var num5 = Number(" ");//空字符串转成0
    var num9 = Number('sd');//像字符串就会转成NaN
    
    其实在实际开发过程中,用的比较多的是parseInt
    parseInt('123int'); //123,忽略第一个遇到的字符串后面所有
    parseInt(' '); //NaN,同时任何非数字开头的字符串都为NaN
    parseInt(0xa); //10
    parseInt(0.6); //0,取整
    parseInt(070); //56或者70,在ES3中被当做8进制,ES5中是70,所以我们在使用时建议加上parseInt(070,10);
    parseInt('50'); //50
    parseInt('123int'); //123
    
    parseFloat('123aa');//123
    parseFloat('0xa');//0,注意这里跟上面的两个都不一样
    parseFloat('1.2');//1.2
    parseFloat('09.5.5');//9.5
    parseFloat('3.2e2');//320

    "object"——对象或null,null数据类型表示的是一个空对象指针,所以这是一个对象。当我们在声明一个对象变量时最好将之初始化为null,这样后续我们便可以通过变量不为null来判断变量赋值成功。ES中规定undefined== null为true,所以在开发的时候需要注意考虑到这种情况。同时,在使用时,也要区分开其跟DOM等对象的不同。

     

  • 相关阅读:
    安卓开发笔记——Broadcast广播机制(实现自定义小闹钟)
    安卓开发笔记——ListView加载性能优化ViewHolder
    安卓智能聊天机器人开发(二)
    安卓智能聊天机器人开发(一)
    基于Tcp协议的简单Socket通信实例(JAVA)
    Gson简要使用笔记
    JAVA的String 类【转】
    Oracle EBS R12 客户表结构
    EBS登陆界面个性化
    EBS取Web字段SQL操作文档
  • 原文地址:https://www.cnblogs.com/shaohua007/p/10589405.html
Copyright © 2020-2023  润新知