zoukankan      html  css  js  c++  java
  • JavaScript基础语法

     

    JavaScript基础语法。

    一、标识符

    硬性要求

    1)         可以是由数字、字母、下划线和美元符号组成,不允许包含其他特殊符号。

    2)         不能以数字开头。

    3)         禁止使用JavaScript中的关键词和保留字来进行命名。

    4)         严格区分大小写。

    二、命名的方法

    1. 匈牙利命名法

    其特点是标识符的名字以一个或者多个小写的字母开头,表示该变量的数据类型。

    数据类型

    对应前缀

    Array数组

    a

    Boolean布尔

    b

    Float浮点

    f

    Function

    fn

    Interger(int)整型

    i

    Object对象

    • o

    Regular Expression正则

    re

    String字符串

    s

       

    1. 驼峰命名法

    驼峰命名法分为两种,一种是大驼峰,另外一种为小驼峰。

    1)         大驼峰又被称之为帕斯卡命名法,就是每个单词的首字母都是大写,

    如:UserName

    2)         小驼峰和大驼峰的区别在于,小驼峰第一个单词首字母为小写,第二个单词首字母为小写。

    如:userName

    1. 蛇形命名法

    其特点在于单词与单词之间使用下划线进行分隔。

    如:user_name

    三、关键字和保留字

    关键字可用于表示控制语句的开始和结束或者用于执行特定操作,关键字是语言本身所保留的,不能用作标识符。

    保留字还没有任何特定的用途,但在将来可能会被用作关键字。

    JavaScript中的关键字与保留字有:

    abstract、await、boolean、break、 byte、case、catch、char、 class. const、 continue、

    finally、float、 for、 function、 goto、if、 implements、 import、 in、instanceof、 int、

    interface、let、 long、 native、new、null、 package、private 、protected、 public、return、short、static、 super、 switch、 synchronized、 this、 throw、 throws、 transient、 true、 typeof、var、 volatile、 void、 while、 with、 yield 、try.

    四、数据类型

    数据类型分为两种:简单数据类型和复杂数据类型。

    简单数据类型:

    String、symbol、number、Boolean、underfined、null。

    复杂数据类型:

    Object

         在JavaScript中,可以通过typeof查看数据类型。

         Console.log(typeof  10);//number

         Console.log(typeof  true);//boolean

    Console.log(typeof  ‘hello’);//string

    Console.log(typeof  [1,2,3]);//object

    五、声明变量

    JavaScript中声明变量有三种:var,let,const。

    Const和let的区别。

    Const所声明的变量如果是简单数据类型,那么是不能在改变的。

    Let所声明的变量无论是简单数据类型还是复杂类型,在后面都可以改变。

    Var所声明的变量,允许重复声明;

    重复声明不带有复制操作,js引擎会自动忽略后面的变量声明。

    var test = 3;

    var test;

    console.log(test);//3

            重新声明是如果有赋值操作,那么后面的数据会覆盖前一个数据。

    var test = 3;

    var test = 5;

    console.log(test);//5

    六、作用域

    1、  全局作用域

    在全局作用中所声明的变量称称为全局变量,全局变量在任何地方都可以被访问。

    let a = 5;//这是一个全局变量。

    2、  局部作用域

    在js中,一对大括号就能产生一个局部作用域。局部作用域里的变量称为局部变量,只能在这个局部作用域中才能被访问。

    {   

    let i = 10;   

    console.log(i);//10

    }

     console.log(i);//referenceError: I is not defined

            在局部作用域里,如果变量名和全局作用域里的变量名冲突,优先使用局部作用域里的变量。

    let i = 10;

     {   

    let i = 100;   

    console.log(i);//100

    }

    console.log(i);//10

    如果在局部作用域里声明变量没有书写关键字,会声明一个全局变量。

    七、数据类型

    1、  undefined类型

    undefined类型就只有一个值,undefined。在使用变量但是没有为其赋值时,这个变量的值就是undefined。

    注意:没有声明变量,使用时会报错,而不是undefined,但是打印时,显示的类型确实undefined。

    let i;

    console.log(typeof i);//undefined

    console.log(typeof j);//undefined

    console.log(i);//undefined

    console.log(j); //ReferenceError: j is not defined

    2、  null类型

    null 类型的值只有一个,就是null,null表示一个空对象。从逻辑角度,null值表示一个空对象指针,用typeof操作符检测null的值会返回object。

    let i = null;

    console.log(typeof i);//object

           undefined值是从null值派生而来,对这两个数据进行相等测试时返回true。

                 if(null == undefined){   

    console.log('Yes');//Yes

     }

    3、  布尔类型

    布尔类型又被称为Boolean类型,就是真和假,这个类型的值只有两个,一个是true,另一个是false。

           let i = true;

    console.log(i);//true

    console.log(typeof i);//boolean

           注意:这两个值与数字值不一样,因此true不一定等于1,false也比一定等于0,Boolean类型值区分大小写,所以true、false和True、False不同。

    虽然Boolean类型的值只有2个,但在ECMAScript中所有类型都可以转换为Boolean类型

    console.log(Boolean("Hello"));//true

    console.log(Boolean(42));//true

    console.log(Boolean(0));//false

    9个值对应布尔类型的假值:

      1、 “”:双引号的空字符

      2、‘’:单引号的空字符

      3、 ``:空字符模板

      4、0:数字0

      5、-0:js中-0和0为不同值

      6、NaN

      7、false

      8、null

      9、undefined

      

    4、  数字类型

    数字类型又被称作number类型,其值分为整数和实数。

    1、  整数

    let a = 12;

    let b = -7;

    注意:二进制以0b开头,八进制以0开头,十六进制以0x开头

            //二进制

    let a = 0b101;//5

    // 八进制

    let b = 017;//15

    //十进制

     let c = 21;//21

     // 十六进制

    let d = 0xFD;//253

    console.log(a,b,c,d);

    2、  实数

    实数就是常见的小数或者称为浮点数

    表示浮点数方式的有两种:小数型和科学记数法型。

    let a = 3.14;

    let b = 9.12e+2;

    console.log(a,b);//3.14 912

    5、  NaN

    NaN:Not a Number,非数值。特点任何涉及NaN的操作都会返回NaN。

    let a = NaN + 10;

    console.log(a);//NaN

          

    NaN和任何值都不相等,包括自己本身。

            console.log(NaN === NaN);//false

    isNaN()函数,判断一个参数是否不是数值。

    console.log(isNaN(NaN));//true

    console.log(isNaN("123"));//false

    console.log(isNaN(123));//false

    console.log(isNaN("Hello"));//true

    console.log(isNaN(true));//false

    返回值为true则不是数值。返回false是数值。

          NaN是属于number类型的。

    console.log(typeof NaN);//number

    6、  数值转换

    1、  number():可以将非数值转换为数值,

    使用number()函数时注意:

         如果是Boolean值,true和flase将分别转换为1和0.

         如果是数字,那么就是简单地传入和返回。

    如果是null值,那么返回0;

    如果是undefined,返回NaN。

    console.log(Number(true));//1

    console.log(Number(false));//0

    console.log(Number(10));//10

    console.log(Number(null));//0

    console.log(Number(undefined));//NaN

     如果是字符串只包含数字。将转换为十进制,即”1”变成1. “123”变成123,”011”变成11(注意这里不会被当做八进制来处理)

     如果字符串中包含有效的十六进制格式,如”1.1”,则会被转换对应的浮点数值

    如果字符串中包含有效的十六进制格式,如”0xf”,则会被转换同等大小的十进制整数。

    如果字符串是空,则转换为0.

    如果字符串包含上述格式之为的字符,则转换为NaN。

    列如:

    console.log(Number("1"));//1

    console.log(Number("012"));//12

    console.log(Number("0o10"));//8

    console.log(Number("0b111"));//7

    console.log(Number("3.14"));//3.14

    console.log(Number("0xf"));//15

    console.log(Number(""));//0

    console.log(Number("123Hello"));//NaN

    parseint():可以将非数值转换为数值,

           parseint()更多看是否有数字,有就会将其转换为数值。

    如number()函数转换”123hello”是会转换为NaN,而parseint()转换为123。

    遇到空字符串时number()函数会将其转换为0,而parseint()转换为NaN

    遇到小数时parseint()函数会取整。

    console.log(parseInt("1"));//1

    console.log(parseInt("012"));//12

    console.log(Number("0o10"));//8

    console.log(Number("0b111"));//7

    console.log(parseInt("3.14"));//3

    console.log(parseInt("0xf"));//15

    console.log(parseInt(""));//NaN

    console.log(parseInt("123Hello"));//123

     parsefloat():可以将非数值转换为数值,

             parsefloat():只解析十进制,所以没有第二参数,该函数会将小数点的字符串转换为小数,没有小数点的数转换为整数。同样的parsefloat()转换更多的数值,”123hello”会被转换为123.

    console.log(parseFloat("21"));//21

    console.log(parseFloat("123Hello"));//123

    console.log(parseFloat("0xA"));//0

    console.log(parseFloat("3.14"));//3.14

    console.log(parseFloat("22.34.5"));//22.34        

    console.log(parseFloat("0908.34"));//908.34

    console.log(parseFloat("3.1415e2"));//314.15

    ES6将全局方法parseint()和parsefloat()等移植到number对象上。行为保持不变,目的逐步减少全局性的方法,使得语言逐步模块化。

    //ES5写法

    console.log(parseInt("12.34"));//12

    console.log(parseFloat("12.34#"));//12.34

    //ES6 写法

    console.log(Number.parseInt("12.34"));//12

    console.log(Number.parseFloat("12.34#"));//12.34

    7、  字符串类型

    字符串类型:可以用单引号,也可以用双引号。

    注意:字符串的内容本身包含单引号或者双引号的话,需要和字符串界限符区分开

    let a = "Hello 'World',welcome";// 正确

    let b = 'Hello "World",welcome';// 正确

    let c = "Hello "World",welcome";//正确

          字符串数据类型很霸道,他和其他数据类型相加都会转换为字符串类型。

                  let a = "abcd";

    let b = 13 + a;

    let c = 3.14 + a;

    let d = true + a;

    let e = null + a;

                  let f = undefined + a;

    console.log(typeof b);//string

    console.log(typeof c);//string

    console.log(typeof d);//string

    console.log(typeof e);//string

                  console.log(typeof f);//string

    tostring():该函数会将除了null和undelfined以外的数据类型转换为字符串

    let a = 10,b = true,c = null,d;

    console.log(typeof a.toString());//string

    console.log(typeof b.toString());//string

    console.log(typeof c.toString());// 报错

     console.log(typeof d.toString());

    null和undelfined不能通过tostring()函数转换为相应的字符串,tostring()函数在转换数值是可以带有参数,可以将数值指定转换为几进制。

    let i = 10;

    console.log(i.toString());//10

    console.log(i.toString(2));//1010

    console.log(i.toString(8));//12

    console.log(i.toString(10));//10

    console.log(i.toString(16));//a

    string:可以将5种数据类型转换为字符串

    let a = 10,b = true,c = null,d;

    console.log(String(a),typeof String(a));//10 string

    console.log(String(b),typeof String(b));//true string

    console.log(String(c),typeof String(c));//null string

    console.log(String(d),typeof String(d));//undefined string

    字符串模板:用反引号(`)标识

    let str = `Hello World`;

    console.log(str);//Hello World

    console.log(typeof str);//string

    console.log(str.length);//11

    使用模板字面量语法创建一个字符串,并赋值给message变量,这时变量与普通字符串一样。如果在字符串中包含反引号,只需用反斜杠转义。

    ES6的模板字面量使用多行字符串更易创建,因为它不需要特殊的语法,只需在想要的位置换行,此处换行会同步在结果中。

    let str = `Hello World`;

    console.log(str);

    //Hello

    //World

    console.log(typeof str);//string

    console.log(str.length);//12

    在反引号之内的所有空白符都是字符串的一部分,需留意缩进。

    变量占位符由起始的${与结束的}来界定,之间允许放任意的js表达式。

    let name = "xiejie";

    console.log(`Hello,${name}`); //Hello,xiejie

    占位符${name}会访问本地的变量name,并将其值插入message字符串中。Message变量会立即保留该占位符的结果。

    占位符是js表达式,还可以嵌入运算符,函数调用等。

    let count = 10,price = 0.25;

    console.log(`${count} items cost $${(count*price).toFixed(2)}`);

    //10 items cost $2.50

  • 相关阅读:
    网络基础 | 等长子网划分概述
    python学习笔记(六)——异常处理
    python模块 | 随机数模块—random模块
    python模块 | 时间处理模块—datetime模块
    python学习笔记(五)——模块导入
    思科计算机网络 | 第一章路由器概念测试题(一)
    kali Linux 渗透测试 | ettercap图形界面(ARP 欺骗 + DNS欺骗)
    单例模式 | C++ | Singleton模式
    思科网络学习笔记 | 路由概念
    python学习笔记(五)——静态方法、类方法、运算符重载
  • 原文地址:https://www.cnblogs.com/caoxiangwang/p/11407718.html
Copyright © 2011-2022 走看看