js基本语法
数据类型
-
不可改变的原始值(栈数据)
Number String Boolean undefined null -
引用值(堆数据)
array object function
变量(variable)
变量声明
- 声明、赋值分解
var a = 100;
var b;
b = 200;
- 单一var
var a = 10,
b,
c,
d,
e;
命名规则
- 变量名必须以英文字母、_、$开头
- 变量名可以包括英文字母、_、$、数字
- 不可以用系统的关键字、保留字作为变量名
js语句的基本规则
- 语句后面要用";"结束;
- js语法错误会引发后续代码终止,但不会影响其他js代码块;
- 书写格式要规范,"=±/"两边都应该有空格;
var a = 1 + 1 + "a" + "b" + 1 + (1 + 2);
document.write(a);
output: 2ab13
NaN-not a number
类型转换
typeof - number / string / boolean / object / undefined / function --bfnosu
var num= "2" * "1";
console.log(typeof(num) + " : " + num);
- 显式类型转换
- Number(mix)
- parselnt(string,radix)
基数radix不代表进制,radix取值范围为2~36,超出范围output: NaN
(1)string以0x开头,string的其余部分被解析为16进制
(2)string以0开头,0之后的字符会被解析为8/16进制;
(3)string以1~9开头,string被解析为十进制的整数
- string为单个字符解析的方式,当string的数字大于radix时,只解析到它 的上一位
parseInt(2,2)//NaN//string不在radix范围内
parseInt(2,1)//NaN//string不在radix范围内
parseInt(171,6)//1//只解析到1
parseInt(11,2)//3(2+1)
parseInt(12,2)//1//只解析到1
parseInt(17,8)//15(8+7)
parseInt(18,8)//1
parseInt('1f',16)//31(16+15)
parseInt('1e',16)//30(16+14)
parseInt('1g',16)//1//只解析到1
parseINt(010)//未定,返回10/8
- parseFloat(string)
- string以0/0x开头,同2.(1)(2)
parseFloat(true/false)//NaN
parseFloat(27.99)//27.99
//数字和进制都识别
parseFlloat(0b101)//5
parseFloat(011)//9//0开头解析为8、16进制
parseFloat(0x11)//17//0x开头解析为16进制
//字符串只识别10进制
parseFloat('0b101')//0
parseFloat('011')//11
parseFloat('0x11')//0
- toString(radix)
- String(mix)
- Boolean()
将一个数从二进制转成10进制,再从十进制转成16进制 ↓
var num = 10101010;
var test = parseInt(num, 2);
console.log(test.toString(16));
output: aa;
- 隐式类型转换
- isNaN()
先把括号中的内容放到Number()中,判断是不是NaN,然后再返回True/False - ++/-- ±
同上
var a = +"abc";
console.log(a + " : " + typeof(a));
- +(加)
- -*/%
- && || !
- < > <= >=
- == !=
- === (绝对等于)、!== (绝对不等于)
NaN === NaN =>false
// NaN不等于任何,也不等于自身
- !!" " ==> true、!!“” ==> false
- alert-弹出块
alert(1 === "1");
alert(typeof(a));
toFixed()-保留几位小数
js运行:
-
语法分析(有无低级错误)
-
预编译(见函数)
-
解释执行(解释一行执行一行)