JavaScript基本概念(基本语法、数据类型、操作符)

声明:本人的所有博客皆为个人笔记,作为个人知识索引使用,因此在叙述上存在逻辑不通顺、跨度大等问题,希望理解。分享出来仅供大家学习翻阅,若有错误希望指出,感谢!

基本概念

JavaScript区分大小写

标识符采用驼峰写法

不能将关键字用作标识符

注释

单行注释://xxxxxxxxxx

多行注释:/* xxxxxxxxxxx */

严格模式

在整个脚本启用严格模式:在顶部添加 “use strict”;

在函数中启用严格模式:在函数体第一行添加 “use strict”;

语句

JavaScript语句以 ; 作为结尾,可以省略但建议永远不要省略

使用 { } 表示代码块,建议能写代码块的地方都写代码块

变量

定义变量的语法

var 变量名1,变量名1,……;	var 变量名=XXX,变量名=XXX,……;
  • JavaScript变量使松散型,可以保存任何类型数据

  • 每个变量仅仅是一个数据的占位符而已

  • 未经初始化的变量会保存一个特别的值:undefined

  • 可以在修改变量值的同时修改变量类型

  • 用var定义的变量为局部变量,这个变量在函数退出后会被销毁

  • 省略var可以定义全局变量,但不建议在局部作用域中定义全局变量

  • 严格模式下不能定义名为eval或arguments变量,否则会导致语法错误

数据类型

Undefined
  • 使用var声明变量但未对其初始化时,该变量的值是Undefined,建议显式的初始化变量
Null
  • 表示一个空对象指针,typeof操作符检测null会返回object
  • 如果定义的变量准备在将来保存对象,那最好将其赋值为null
  • 位于null与undefined之间的 == 总会返回true
Boolean
  • 只有true和false两个值,true不一定等于1,false不一定等于0
  • true和false区分大小写
  • 可以调用Boolean() 方法将一个值转化为Boolean,空值or空字符串转为false,其他情况为true
Number
  • 八进制第一位必须为0,若后面的数字超过了7,则会被解释为十进制,开头的0会被无视
  • 八进制在严格模式下无效
  • 十六进制开头必须是0x
  • JavaScript中可以保存+0和-0,二者相等
  • 浮点数必须有小数点,若小数点后没有数字,则会被解释为整型
  • AeB:科学计数法,AeB=A*10^B
  • 数值范围:超出JavaScript表示范围的值会被记录为Infinity,表示无穷,有正负之分,Infinity变量无法参与运算
  • NaN:
    • NaN表示非数值,是一个特殊数值,常用于函数返回值,用于表示函数返回错误
    • 任何涉及NaN的操作都会返回NaN
    • NaN与任何值不相等,包括NaN自身
    • isNaN()函数用于确定变量是否为NaN
  • 数值转换
    • Number( anyData ):将任意数据转换为数值
      • 布尔型转 0 or 1
      • null转0
      • undefined转NaN
      • 字符串:
        • 只包含数字的字符串转对应数值(十进制)
        • 空字符串转0
        • 其他字符串转NaN
    • parseInt( String , 进制数 ):将字符串转化为整型,进制数可以不写,但建议在任何情况下都写进制数
    • parseFloat( String ):将字符串转化为浮点型,只解析十进制
String
  • 可以由 " " 或 ’ ’ 表示,意义完全相同
  • 可以通过 字符串.length 获取字符串长度,但如果字符串中包含双字节字符,则length属性可能不会精确返回字符数
  • 字符串不可变,修改字符串需销毁原有字符串,再建立一个新的字符串对象赋给原变量
  • 转化为字符串:
    • toString()方法,在调用数值的toString()方法时可以传入一个进制数,null和undefined没有toString()方法
    • 使用 非字符串+"" 将非字符串转化为字符串
Object

是所有引用类型的父类

var 变量名 = new Object();
  • Object类方法:
方法简介
hasOwnProperty( propertyName )用于检查给定的属性是否在当前对象实例中
isPropertyOf( Object )用于检查传入的对象是否是当前对象的原型
propertyIsEnumerable( propertyName )用于检查给定的属性能否使用for-in语句来枚举
toLocaleString( )返回对象的字符串表示,该字符串与执行环境的地区对应
toString( )返回对象的字符串表示
valueOf( )返回对象的字符串、数值、或布尔值表示
typeof操作符
typeof 变量名or具体值;		//返回数据类型名

操作符

一元操作符

递增、递减运算符
  • ++n n++ --n n–
  • 与c语言相同
一元加减操作符
  • 对数值使用:表示正负
  • 对非数值使用:自动调用Number()函数进行转型,并添加正负
布尔操作符
  • 逻辑非

    先将操作数转化为一个布尔值,再取反

  • 逻辑与(&&)

    操作数1操作数2返回值
    对象操作数2
    求值为true对象操作数2
    对象对象操作数2
    nullnull
    NaNNaN
    undefinedundefined
  • 逻辑或(||)

    操作数1操作数2返回值
    对象操作数1
    求值为false操作数2
    对象对象操作数1
    NaNNaNNaN
    nullnullnull
    undefinedundefinedundefined

二元操作符

乘性操作符

包括乘法、除法、取模

  • 与C语言基本相同
  • 若操作数不是数值,会先调用Number()
加性操作符

1.加法

  • 若两个操作数都是数值,则按常规加法计算(包括无穷Infinity)
    • 有关Infinity的计算,若在数学上求不出,则结果为NaN
  • 若操作数有字符串,则执行字符串拼接操作,将不是字符串的操作数转为字符串( toString() )

2.减法

与加法类似

关系操作符

> < >= <=

操作数1操作数2处理方式
数值数值数值比较
字符串字符串字符编码值比较
数值将操作数2转为数值,进行数值比较
对象调用对象的valueOf()或toString(),再按照以上规则比较
布尔值将布尔值转化为数值,进行数值比较
相等操作符

相等、不相等:先转换再比较

操作数1操作数2处理方式
布尔值先转为01再比较
字符串数值先将字符串转为数值再比较
对象非对象先调用对象的valueOf()
对象对象比较两对象是否为同一个对象
nullundefined相等
NaN不相等

全等、不全等:只比较不转换

全等:===

不全等:!==

条件操作符

A ? B : C //若A求值为true,则返回B,否则返回C

语句

if、do-while、while、for、switch语句

与C语言基本一致

这些语句的条件表达式可以不返回布尔值,会自动调用Boolean()方法

建议始终使用代码块 { } ,即使代码块里只有一行代码

for-in语句

语法:

for( var 变量名 in 遍历对象 ){}
  • 类似于java中的for(类型名 item:遍历对象)
  • 在使用for-in之前,建议先检查遍历对象是否是null或undefined

label语句

使用label语句在代码中添加标签

标签名:语句
  • 一般与循环语句配合使用
  • 使用 break 标签名; or continue 标签名; 返回代码中的特定位置(标签声明处),可以使break与continue语句一次性跳出多重循环
  • label标签尽量少用

with语句

with(对象){
	代码……;
}

将代码的作用域设置到一个特定对象中

如:with语句中的代码可以直接使用特定对象的方法而不用加"对象." 前缀

  • 大量使用with会降低性能

函数

function 函数名(arg0,arg1,……){
	函数体
}

特点:

  • 对返回值没有要求
    • 建议要么不返回值,要么始终返回一个值,不要有时候返回,有时候不返回,难以维护
  • 严格模式下
    • 不能使用eval或arguments作函数名或参数名
    • 不能出现两个参数同名
  • JavaScript函数使用数组来接受参数,故长度不限,类型不限,参数的命名仅提供便利,不是必须的
    • 即使函数定义了两个参数,也可以传入三个参数
  • 使用预定义数组arguments[索引]来方位参数数组,索引从0开始,arguments.length获取参数个数
  • 由于参数名和参数个数都没有实际意义,因此JavaScript的函数没有重载,但可以使用arguments.length获取参数个数,再根据参数个数做出不同处理,以实现伪重载

**另一种函数定义方式:**函数表达式

var 函数名 = function(参数列){
	函数体;
}

使用 函数名() 来调用函数

定义立即执行函数:

var 变量名 = function(参数列){		//此处变量名接受函数的返回值,而不是函数对象
	函数体;
}();		

该函数由于没有名字,故只能用一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值