目录:
1、js介绍
* js是一款运行在客户端的网页编程语言。最初的目的是为了处理表单的验证操作。
- 弱类型语言
- 脚本语言
- 解释型语言
- 动态类型的语言
- 基于对象的语言
* 组成
- ECMAscript:js标准
- DOM(Document Object Model):文档对象模型,通过js操作网页元素
- BOM(Bowser Object Model):浏览器对象模型,通过api操作浏览器
* 特点:
- 简单易用
- 解释执行,无需编译
- 基于对象
* js的应用场景
- 网页特效
- 服务端开发(nodejs)
- 命令行工具(nodejs)
- 桌面程序(Electron)
- app(Cordova)
- 控制硬件-物联网(Ruff)
- 游戏开发(coco2d-js)
2、js的书写位置
* 内嵌式
<script type="text/javascript">
alert("Hello~");
</script>
* 外链式
<script src="" type="text/javascript"></script>
* html标签内嵌
<input type='button' value='alert(hello~)' onclick='' />
3、js代码的注意事项和注释
1)在一对script标签中有错误的js代码,该错误代码后面代码不执行
2)一对script标签中有错误js代码,不会影响其他scrip标签js代码的执行
3)script标签可以写成<script type='text/javascript'>,这是标准写法
<script language='javascript'>或<script type='text/javascript' language='javascript'>也可以
* js注释
单行注释 //
多行注释 /* */
4、输出消息的几种方式
* Javascript执行过程中的原理
- html页面中出现<script>标签后,就会让页面暂停等待脚本的解析和执行。
无论当前脚本是内嵌式还是外链式,页面的下载和渲染都必须停下来
等待脚本的执行完成才能继续,这在页面的生命周期中是必须的。
* alert():在页面弹出一个对话框,早期JS调试使用。
* confirm():在页面弹出一个对话框(有确定|取消的标签), 常配合if判断使用。
* console.log():将信息输入到控制台,用于js调试
* prompt():弹出对话框,用于接收用户输入的信息。
var ssd = prompt("请输入摄氏度");
alert("温度为:"+ssd);
* document.write():在页面输出消息或标签
5、变量
* var num = 10; // 声明变量并初始化
* 变量的命名规范
- 不能以数字或者纯数字开头来定义变量名。
- 不推荐使用中文来定义变量名。
- 不能使用特殊符号或者特殊符号开头(下划线_除外);
- 不推荐使用关键字和保留字来定义变量名。
* 在JS中严格区分大小写的!!!
6、数据类型和typeof
6种数据类型:number,string,boolean,undefined,null,object
* 数字类型number
var num1 = 2;//正数
var num2 = -2.1;//负数,小数
alert(typeof(num1));//number
alert(typeof num2);//number
十进制表示var num1 = 2;
十六进制0x开头,0-9 a(A)-f(F)表示 var num3 = 0xffff;
八进制 0开头,0-7组成
Number.MIN_VALUE // 数字的最小值
Number.MAX_VALUE // 数字的最大值
console.log(0.1 + 0.2); // 0.30000000000000004
console.log(1/0); // Infinity
* 字符串类型string
字符串:由单引号或双引号扩起来 var str = 'abc';
console.log('10' + 5); // 15
console.log(typeof('10' + 5)); // string
console.log('10' - 5); // 5
console.log(typeof('10' - 5)); // number
转义字符
\" 双引
\' 单引
\n 换行
\r 回车
* 布尔类型boolean
实际运算中true=1,false=0
var flag = true;
alert(flag + 1);//2
var flag = false;
alert(flag + 1);//1
var a = 1;
var b = 2;
var c = a > b;
alert(c);//false
* undefined 变量未初始化
定义了变量,没有给变量赋值,变量在内存中是存在的
函数没有明确返回值,如果接收了,结果也是undefined
var num;
console.log(num + 10); // NaN
console.log(isNaN(num + 10)) // true
* null 变量未引用,值为空,在内存中没有该变量
var nul = null
console.log(typeof nul) // object
7、类型转换
* string==>number
- var num1 = Number("123");
** 数字类型的字符串,转换之后得到的数字。
** 非数字字符串,转换之后得到是NaN。
** 小数类型的字符串,转换之后得到的是原数字。
- var num2 = parseInt("123");
** 整数数字类型的字符串,转换之后得到的整数数字。
** 数字开头的字符串,转换之后得到的是前边的数字。
** 非数字开头的字符串,转换之后得到的是NaN。
** 小数类型的字符串,转换之后【取整】,去除小数
- parseFloat
** 整数数字类型的字符串,转换之后得到的整数数字。
** 数字开头的字符串,转换之后得到的是前边的数字。
** 非数字开头的字符串,转换之后得到的是NaN。
** 小数类型的字符串,转换之后得到的是原数字。
// 其他类型转数字类型 // 1. parseInt() 转整数 console.log(parseInt('10')) // 10 console.log(parseInt('10a')) // 10 console.log(parseInt('a10')) // NaN console.log(parseInt('10.23')) // 10 console.log(parseInt('10.23a')) // 10 // 2. parseFloat() 转小数 console.log(parseFloat('10')) // 10 console.log(parseFloat('10a')) // 10 console.log(parseFloat('a10')) // NaN console.log(parseFloat('10.23')) // 10.23 console.log(parseFloat('10.23a')) // 10.23 // 3. Number() 参数是一个数字才能转成功 console.log(Number('10')) // 10 console.log(Number('10a')) // NaN console.log(Number('a10')) // NaN console.log(Number('10.23')) // 10.23 console.log(Number('10.23a')) // NaN // 其他类型转字符串 // 1. toString() var num = 10; console.log(typeof num.toString()) // string //console.log(typeof num1.toString()) // 报错 num1 is not defined // 2. String() console.log(typeof String(10)) // string // 其他类型转boolean类型 console.log(Boolean(1)) // true console.log(Boolean(0)) // false console.log(Boolean('')) // false console.log(Boolean({})) // true console.log(Boolean([])) // true console.log(Boolean(null)) // false console.log(Boolean(undefined)) // false
隐式数据类型转换:在运算过程中,程序自己进行的数据转换(程序员没有操作),例如:
var n1=12; var n2="2"; alert(n1-n2);//10
8、运算符
8.1、赋值运算符:=
带操作的赋值运算 += -= *= /=
8.2、算数运算符:+ - * / %
带操作的赋值运算 += -= *= /=
js里面不区分整数和小数 123/1000*1000=123
var a; a += 1; // a = a + 1;
alert("456"+1); //结果是4561 alert("456"-1);//结果是455 alert("abc"-1);//结果是NaN
alert(flag+1); //flag为true(值为1),结果是2 alert(flag+1); //flag为false(值为0),结果是1
8.3、比较运算符
< > <= >= == != === !==
==和===的区别:==比较值内容;===比较值和类型
8.4、逻辑运算符
与&& 或|| 非!
8.5、运算符++ --
var num = 10; console.log(num++); // 10 console.log(num); // 11 var num1 = 10; console.log(++num1); // 11
9、流程控制
条件判断: if、else if、else
// 条件判断:if var num = 10; if (num > 5) { console.log('num 大于 5'); } var num1 = 10 if (num1 > 5) console.log('num1 大于 5');
// 条件判断:if、else var num2 = 2; if (num2 > 5) { console.log('num2 大于 5'); } else { console.log('num2 不大于 5'); } var num3 = 2; if (num3 > 5) console.log('num3 大于 5'); else console.log('num3 不大于 5');
// 条件判断if、else if、else var num4 = 10; if (num4 > 10) { console.log('num4 大于10') } else if (num4 < 0) { console.log('num4 小于0') } else { console.log('num4 在0到10之间') }
三元表达式: 表达式 ? 结果1:结果2;
如果表达式结果为true,执行结果1,如果表达式结果为false,执行结果2。可以理解为if else的另外一种写法。
switch...case
var num = 2 switch (num) { case 1: console.log('num为1'); break; case 2: console.log('num为1'); break; default: console.log('num不为1或2'); break; }
var str = 'b' switch (str) { case 'a': console.log('str为a'); break; case 'b': console.log('str为b'); break; default: console.log('str不为a或b'); break; }
// case穿透: 执行case 'a'后面的语句块后没有break, 继续执行,这就是case穿透 var str = 'a' switch (str) { case 'a': console.log('str为a'); case 'b': console.log('str为b'); break; default: console.log('str不为a或b'); break; }
case穿透的应用场景
var month = prompt("请输入月份"); switch(month){ case "3": case "4": case "5": alert("春季"); break; case "6": case "7": case "8": alert("夏季"); break; case "9": case "10": case "11": alert("秋季"); break; case "12": case "1": case "2": alert("冬季"); break; default: alert("您在火星"); break; }
while循环
var i = 0; while (i < 10) { console.log(`i=${i}`) i++; } console.log(`最后i=${i}`)
do...while循环
var i = 0; do { console.log(`i=${i}`) i++ } while (i < 10) console.log(`最后i=${i}`)
for循环
for (var i = 0; i < 10; i++) { console.log(`i=${i}`) } console.log(`最后i=${i}`)
关键字break
var sum = 0; var i = 0; while (sum < 100) { sum += i; i++ } console.log(`sum=${sum}`) var sum = 0; var i = 0; while (true) { // 如果sum大于100,跳出循环 if (sum > 100) break; sum += i; i++ } console.log(`sum=${sum}`)
关键字continue
for (var i = 0; i < 10; i++) { // 如果i为偶数,执行下一次循环 if (i % 2 === 0) continue; console.log(`i=${i}`) } console.log(`最后i=${i}`)
10、数组
来源:https://www.cnblogs.com/xy-ouyang/p/12180148.html