JavaScript基础
如何引入js
-
页面内嵌
<script></script>
标签 -
外部引入
<script src="location"></script>
为符合web标准 (w3c标准中的一项) 结构(html) / 样式(css) / 行为(js) 相分离, 通常会采用外部引入.
外部引入优先级高于页面内嵌标签.
js基本语法
变量
变量声明:
声明: var a;
赋值: var a = 100;
命名规则
-
变量名必须以 英文字母 / _ / $ 开头.
-
变量名可以包括英文字母 / _ / $ / 数字.
-
不可以用系统的关键字 / 保留字作为变量名.
值类型 – 数据类型
赋值形式不同
- 不可改变的原始值 stack (栈数据): 拷贝值
Number, String, Boolean, undefined, null
var a = 1; //数值
var b = "一二三"; //字符串:汉字 / 数字 / 字母
var b = true; //false 布尔值
var b = undefined; //经过声明没赋值
var b = null; //占位值(空值,用来覆盖)
- 引用值 heap (堆数据): 拷贝地址
array, object, function
//数组
var arr = [1,2,3,true,"abc"];
var n = arr.length; //数组长度
//对象
var obj = {
//key属性名 value属性值
name : "名字", //必须用冒号和逗号
age : 18,
sex : undefined,
beautiful : true
}
console.log(obj.name);
obj.name = "姓名"; //修改属性值
console.log(obj.name);
js语法基本规则
- 语句后面必须加分号.
不需要加分号的:
function test() {}
for() {}
if() {}
- js语法错误会引发后续代码终止, 但不会影响其他js代码块
-
低级错误 (语法解析错误)
-
逻辑错误 (标准错误, 情有可原)
没有定义变量时, 只有
typeof(a);
这种情况不报错 (返回undefined).
typeof(typeof(a));
返回string.
- 书写格式要规范, "= + / -"两边都应该有空格
输入弹出框:
var n = parseInt(window.prompt('input'));
输出值:document.write();
输出弹出框:alert();
js运算符
运算操作符
“+”:
-
数字运算 / 字符串连接
-
任何数据类型加字符串都等于字符串
“-”, “*”, “/”, “%”, “=”, “()”
运算不能进行时输出 NaN (Not a Number)
无穷时输出 Infinity
优先级"="最弱, "()"最高
“++”, “–”, “+=”, “-=”, “/=”, “*=”. “%=”
比较运算符
“>”, “<”, “==”, “>=”, “<=”, “!=”
字符串比较ASCII码大小, 从第一个字符开始比较
逻辑运算符
“&&”, “||”, “!”
undefined, null, NaN, “”, 0, false 转换成布尔值都为false.
运算结果为真实的值
例如&&: 第一个值的布尔值为真, 则输出第二个表达式的值; 第一个值的布尔值为假, 则输出第一个表达式的值.
"!!"即为返回其布尔值
条件语句
- if, if else if
if(条件){
表达式;
}
if <–> && 转换
- for
for(初始值;条件;表达式){
表达式;
}
- while, do while
while(条件){
表达式;
}
do{
表达式;
}while(条件);
- switch case
执行符合条件的语句及其后面的所有语句
var n = window.prompt('input');
switch(n){
case 1:
console.log('a');
case 2:
console.log('b');
case true:
console.log('c');
}
- break
终止循环,跳出循环语句
- continue
终止本次循环,进行下一次循环
类型转换
typeof() 返回数据类型
返回值: number, string, boolean, object(数组也返回object), undefined, function
var num = 123;
console.log(typeof(num));
显式类型转换
- Number(mix)
转换为数字
var demo = "123";
var num = Number(demo);
console.log(typeof(num) + " : " + num);
//true转换为1, false / null转换为0, 非数字字符(串) / undefined转换为NaN
- parseInt(string,radix)
转换为整型
var demo = "123";
var num = parseInt(demo, 16); //以十六进制为基底转换为十进制 取值范围: 2-36
console.log(typeof(num) + " : " + num);
//布尔值转换为NaN,其他与Number相似
//从数字位开始查找到非数字位截止
- parseIFloat(string)
转换为浮点数
规则与parseInt相似
- String(mix)
转换为字符串
- Boolean()
转换为布尔值
除undefined, null, NaN, “”, 0, false 转换为false外,其他都转换为true.
- toString(radix)
var demo = 123;
var num = demo.toString(8); //以十进制为基底转化成八进制, 仍然为字符串类型
console.log(typeof(num) + " : " + num);
//undefined和null会报错
隐式类型转换
- isNaN()
判断是否为NaN, 返回值为true / false
将()中的值转换成Number()再判断是否为NaN
- ++/-- +/-(正/负)
将其转换成Number()再进行运算
+
+前后有一个类型为字符串则调用String()将二者都变为字符串
- -*/%
调用Number()进行运算
- && || !
调用Boolean()
- < > <= >=
既有数字又有字符串则转换成Number(), 均为字符串则转换成ASCII码, 输出调用Boolean()
undefined和null与0比较均为false
- == !=
undefined == null / undefined != 0 / null != 0返回true, undefined == 0 / null == 0返回false
=== (绝对等于) !==(绝对不等于), 不进行隐式类型转换