1.0 JavaScript基础之基本语法大全

1.0  JavaScript基础之基本语法大全

1.1 JavaScript的注释与分号

同C语言相同

  • // 意为 单行注释

  • /**/ 意为 多行注释

  • 语句结束使用分号结束 ";"

1.2 JS语法

ECMAscript中的一切(变量,函数名和操作符)都区分大小写

JS的标识符

变量,函数,属性名字或者函数的参数

命名规则:

  1. 由字母,数字,下划线或者$组成
  2. 不能以数字开头
  3. 不能使用关键字,保留字作为标识符

变量

ECMAscript的变量是松散类型(很灵活,可以保存任何类型的数据),可以说变量仅仅是一个用于保存值的占位符(类似%d,%f...)

变量的声明和赋值

变量声明

变量声明使用 var 操作符

语法:var 变量名;

变量一经声明,值变为undefined。

变量赋值

  • 声明的同时赋值:var 变量名=值

  • 先声明后赋值:变量名=值

  • 声明多个变量,用逗号隔开:var id="asd",name="kiki",age;

省略var声明的变量是全局变量(不建议)

JS的数据类型

五种简单数据类型:

undefined null boolean number string

一种复杂数据类型:object

typeof

功能检测变量类型

语法type 变量或者type(变量)返回值什么类型返回什么:string,number,boolen,object,undefined,function

举个栗子:

使用typeof检测变量类型结果:结果为string(字符串)

测试语法

console.log() //在控制台中打印

例如:然后在浏览器的开发者工具(审查元素)中点开console查看打印出来变量name的值

Undefined

数据未赋值时的类型

这个类型只有一个值:undefined

说明:一般而言,不存在需要明显的吧一个变量设置为undefined值的情况(简单说就是默认的数据类型)

null

  1. null表示一个空对象指针
  2. 如果定义的变量准备在将来用于保存对象,那么最好将变量初始化为null。(简单说就是定义一个可以装任何类型的空盒子)

说明: undefined值派生自null值,所以undefined==null的返回结果为true

number

number:表示整数和浮点数

NaN

即非数值(not a number)是一个特殊的数值

  • 任何涉及NaN的操作(例如NaN/10)都会返回NaN
  • NaN与任何值都不相等,包括NaN本身

打印:数字 - 字符串,无法相减出数值

第一个显示出NaN,意思是本应打印数字但是没办法相减所以显示NaN

第二个显示number是因为typeof检测类型的作用,检测到“NaN”,他属于number类型,所以显示number

isNaN( )

  • 语法:isNaN(n)

  • 功能:检测n是否是“非数值”

  • 返回:boolean值(两个值:true/false)

  • 参数:参数n可以是任何类型(什么类型都能判断)

  • 说明:isNaN( )对接收的数值,先尝试转换为数值,再检测是否为非数值

例如:

结果如下:第一个为非数值返回“真”,另一个为假

另一个特性:id虽然添加了双引号意为字符串,但仍显示为number是因为:isNaN会尝试转换为数值,再检测是否为非数值

数值转换

有三个函数可以把非数值转换为数值:

  • Number( )
  • parseInt( ) 转为整型
  • parseFloat( ) 转为浮点型

说明:

  • Number( )可以用于任何数据类型
  • parseInt( )和parseFloat( )则专门用于把字符串转换为数值

Number()

同C语言函数使用类似结果将字符串类型转换为数值

parseInt()

作用:转换为整型(提取整型)原本打印出来是字符串“28asd”,经过parseInt()函数,转换为整型“28”

另一个例子:

这里他将十六进制转换为int型的15,并不是提取整型的0。


但是,它作用的变量值必须以数字开头a由于是数字开头转换成功,b转换失败为NaN

parseFloat()

作用:转换为整型和浮点型(提却浮点型和整型)

从第一个字符开始解析,直至遇到一个无效的浮点数字符为止。

说明:parseFloat()与 parseInt()的区别

第一个小数点有效会忽略前导零(开头的0)

举个综合例子

这里的a有两个小数点并且以0开头数字开头的“前导0”被省略,并且只识别到第二个小数点之前,后面小数点无效。然后parseInt只提取了整型“12”部分。

String

字符串:由双引号“ ”或者单引号' '表示

toString()和String()

  • 语法:str.toString(),String(str)
  • 功能:将str转换为字符串
  • 返回值:str的一个副本
  • 参数:str是要转换的内容,可以是数值,布尔值,对象和字符串。
  • 说明:不明类型时,还可以用String()函数强制转换任何类型的值为字符串

例如:变量a本来是number类型,通过转换字符串之后,显示仍为159但是类型变成string型。变量b通过String()函数也转换成string型。

Boolean

用于表示真假的类型,即true表示真,false表示假

  • 除0以外的所有数字,转换为布尔型都为true
  • 除了“空的”之外的所有字符,(包括空格)转换为布尔型都为true
  • null和undefined转换为布尔型为false

Boolean型的强制转换:Boonlean(变量);

表达式

算术操作符

默认返回number

算术操作符练习:

两个不同类型可以黏一起


不同类型会出现NaN,只有“+”不影响,“*”,“/”,“-” 都会出现NaN


虽然变量b是字符串,但是算数运算时会被自动转换为number型,为隐式 类型转换


赋值操作符

简单赋值:=

复合赋值:+=,-=,*=,/=,%=;

使用基本与C语言相同

比较操作符

> , < , >= , <= , == , === , != , !==

  • ==:相等,仅比较值是否相等
  • ===: 相等,比较值的同时比较数据类型是否相等
  • !=:不相等,仅比较值是否不相等
  • !==:不相等,比较值的同时比较数据类型是否不相等

返回值:Boolean(true或者false)

a大于b。a>b为true

c和d值不同,类型不同。==为false

e和f值相同,类型不同。===为false

g和h值相同。==为true

三元操作符

同C语言使用类似

举个栗子:

结果如下:

逻辑操作符

  • && 与
  • || 或
  • !非

&&逻辑与

基本使用与C语言类似(两个条件同时满足)

使用:1. 会将第一个操作数转化为Boolean类型

2. 若转化后第一个操作数为true,则返回第二个操作值;否则返回第一个操作数的原始值

说明:在有一个操作数不少布尔值的情况,逻辑与操作就不一定返回值,此时他遵循下列规则(多个时遇到true往下走)

  1. 如果第一个操作数隐式类型转换后为true,则返回第二个操作数

一个为真,还需要看另一个情况

第一个a值“asd”为true,所以返回第二个操作数b的值“123”


  1. 如果第一个操作数隐式类型转换后为false,则返回第一个操作数

一个为假,不需要看另一个情况了

第一个操作数是false,返回第一个操作数的值。


  1. 如果有一个变量为null或NaN或undefined,则返回直接为null或NaN或undefined

||逻辑或

基本使用与C语言类似(至少一个条件成立)

说明:在有一个操作数不少布尔值的情况,逻辑与操作就不一定返回值,此时他遵循下列规则(多个时遇到false就往下走)

  1. 如果第一个操作数隐式类型转换后为true,则返回第一个操作数

一个为真,不需要判断另一个了


  1. 如果第一个操作数隐式类型转换后为false,则返回第二个操作数

第一个为假,需要看第二个情况


  1. 如果有两个变量都为null或NaN或undefined,则返回直接为null或NaN或undefined

a*b是NaN,a-b是NaN,所以最后返回为NaN

!逻辑非

说明:

  1. 无论操作数是什么数据类型,逻辑非都会返回一个布尔值

88的隐式转换为true

  1. !!同时使用两个逻辑非操作符时:
    • 第一个逻辑非操作会给予无论什么操作数返回一个布尔值
    • 第二个逻辑非是对该布尔值求反

其实就是原来的样子(取反再取反)

!(!0)就是先!0返回true,然后!返回false

!!的妙用

可以起到直接获得变量布尔值的作用

在js中新手常常会写这样臃肿的代码:

判断变量a为非空,未定义或者非空串才能执行方法体的内容。

var a;if(a!=null&&typeof(a)!=undefined&&a!=''){    //a有内容才执行的代码  }

实际上我们只需要写一个判断表达:

if(!!a){    //a有内容才执行的代码...  }
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部