慕课前端入门-js语法
1. js简介
- js是脚本语言
- js是事件驱动的
- js是独立平台的
2.注释
//单行注释
/* 多行注释*/
3.js的标示符
3.1 什么是标示符
变量、函数、属性的名字,或者函数的参数
3.2 标示符的命名规则
- 由字母、数字、_或$组成
- 不能以数字开头
- 不能适用关键字,保留字作为标示符
3.3 js的变量是松散类型
松散类型:可以用来保存任何类型的数据。即每个变量仅仅是一个用于保存值的占位符而已。
变量声明:使用var操作符。省略var声明的变量是全部变量
//直接赋值
var a=1;
//先声明,再赋值
var b;
b=2;
//一次声明多个变量
var c=3,d="hello",e;
4. 简单数据类型
简单数据类型:undefined、null、boolean、number、string
复杂数据类型:object
4.1检测变量类型typeof
typeof的返回值有Undefined、Null、Boolean、Number、String、Object
typeof 变量
typeof(变量)
4.2 undefined未定义
var a;
一个没有值的变量,就是undefined。
undefined派生自null,所以undefined==null返回的结果是true。
4.3 null 空对象指针
var a=null;//值为 null(空), 但类型为对象
4.4 number整数和浮点数
非数值NaN
NaN:即非数值(Not a Number)是一个特殊的数值。
isNaN(n):检测n是否是非数值,返回值是boolean
console.log(18-"abd"); //NaN
console.log(isNa(18)); //false
console.log(isNan("19")); //false isNan()对接收的变量,会先尝试转换为数值,再检测
说明:
- 任何涉及NaN的操作,都会返回NaN
- NaN与任何值都不相等,包括NaN本身
数值转换
Number("16");
Number("abc");//NaN
parseInt("28px");//28
parseInt("0xf",16);//15
parseFloat("12.34.56");//12.35
parseFloat("0xf");//0
parseInt
- 会忽略字符串前面的空格,直至找到第一个非空格字符
- 转换空字符串返回NaN
- 这个函数提供第2个参数:转换时使用的进制
- 从第一个字符开始解析每个字符,直至遇见一个无效的浮点数为止。即只有第一个小数点有效
- 始终都会忽略前导的0
4.5 String
字符串由双引号或单引号成对包裹。
//将变量转换成字符串。返回值是str的一个副本。参数可以是数值、布尔值、对象和字符串
a.toString();
//注意:在不知道参数是不是null或undefined的情况下,还可以使用String()函数。它能够将任何类型的值转换为字符串
String(a);
4.6 boolean
类型转换:
- 除0之外的所有数字,转换为布尔类型都为true
- 除""之外的所有字符,转换为布尔类型都为true
- null和undefined转换为布尔类型为false
5. 表达式
表达式是将同类型的数据(),用运算符号按一定的规则连接起来的,有意义的式子。
操作符的分类:算术操作符、逻辑操作符、负值操作符、比较操作符、三元操作符。
5.1 算术操作符
/*
+ - * / % 递增 递减
左递增:先返回递增之后的值
右递增:先返回原来的值,再返回递增之后的值
*/
x1=20,x2=30;
x3= --x1 + x2--;//x3=19+30=49
x2; //29
5.2 赋值操作符
简单赋值:=
复合赋值:+= -= *= /= %=
如果包含字符串,+就是连接符
a=5
a%=3; //a=2
5.3 比较连接符
/*
>
<
>=
<=
== 相等,只比较值是否相等
!= 不相等,比较值是否不相等
=== 全等,比较值的同时,比较数据类型,是否相等
!== 不全等,比较值的同时,比较数据类型是否不相等
null == undefined:undefined派生于null,所以值相等
*/
### 5.4 三元操作符
```#js
条件?代码1: 代码2;
可替代简单的if语句,如果条件成立,执行代码1,否则执行代码2
5.5 逻辑操作符
&&与
- 当操作布尔值的时候,就返回布尔值
- 在有一个操作数不是布尔值时,与不一定返回布尔值,此时它将遵循以下条件:
- 如果第一个操作数隐式类型转换为true,则返回第二个操作数 "hello" && 30 -> 30
- 如果第一个操作数隐式类型转换为false,则返回第一个操作数。0 && 88 -> 0
- 当前面的操作数隐式类型转换为true时,如果有一个操作数是null,则返回null。null && 0-> null
- 当前面的操作数隐式类型转换为true时,如果有一个操作数是NaN,则返回NaN。NaN && 0-> NaN
- 当前面的操作数隐式类型转换为true时,如果有一个操作数是Undefined,则返回Undefined。Undefined && 0-> Undefined
- 当操作布尔值的时候,就返回布尔值
- 在有一个操作数不是布尔值时,逻辑或就不一定返回布尔值,此时它遵循以下规则:
- 2个都是操作数,如果第一个操作数隐私类型转换为true,则返回第一个操作数。"hello" || 30 -> "hello"
- 2个都是操作数,如果第一个操作数隐式类型转换为false,则返回第二个操作数,依此类推。"" || 30 -> 30