<input type="button" value="点击" onclick="alert('HelloWorld')">
可以将单行或少量JS代码写在HTML标签的事件属性中(以on开头的属性),如:onclick
注意单双引号的使用,在HTML中推荐使用双引号,JS中推荐使用单引号
可读性差,在HTML中编写JS大量代码时,不方便阅读
引号易错,引号多层嵌套匹配时,非常容易混淆
<script> alert('HelloWorld'); </script>
可以将多行JS代码写到<script>标签中
<script src="my.js"></script>
利用HTML页面代码结构化,把大段JS代码独立到HTML页面之外,既美观也方便文件级别的复用
引用外部JS文件的script标签中间不可以写代码
适合于JS代码量比较大的情况
// 单行注释
快捷键:alt+shift+a
/* 多行注释 */
alert(msg) | 浏览器弹出警示框 | 浏览器 |
console.log(msg) | 浏览器控制台打印输出信息 | 浏览器 |
prompt(info) | 浏览器弹出输入框,用户可以输入 | 浏览器 |
<script> prompt("请输入您的年龄"); </script>
<script> alert("请输入您的年龄"); </script>
<script> alert("请输入您的年龄"); </script>
变量就是一个装东西的盒子
本质:变量是程序在内存中申请的一块用来存放数据的空间
var age: //声明一个名称为age的变量
var是一个JS关键字,用来声明变量(variable变量的意思)。使用该关键字声明变量后,计算机会自动为变量分配内存空间,不需要程序员管
age是程序员定义的变量名,我们要通过变量名来访问内存中分配的空间
age=10; //给age这个变量赋值为0
=用来把右边的值赋给左边的变量空间中
变量值是程序员保存到变量空间里的值
console.log(age)
一个变量被重新赋值后,它原有的值就会被覆盖,变量值将是最后一次赋的值为准
<script> var myname = '原值'; console.log(myname); myname = '更新值'; console.log(myname); </script>
中间用英文逗号隔开即可
var age = 18, address = 'LanZhou', tel = 908787;
var age;console.log(age); | 只声明不赋值 | undefined |
console.log(age) | 不声明不赋值直接使用 | 报错 |
age = 10,console.log(age); | 不声明只赋值 | 1 |
由字母(A-Za-z)、数字(0-9)、下划线()、美元符号($)组成,如:usrAge,pum01,_name
严格区分大小写。var app;和 var App;是两个变量
不能以数字开头。18age 是错误的
不能是关键字、保留字。例如:var、for、while
变量名必须有意义。
遵守驼峰命名法。首字母小写,后面单词的首字母需要大写。 myFirstName
JavaScript是动态语言,变量的数据类型是可以变化的
<script> var a = 10, b = 0.123, c = 'abc'; </script>
简单数据类型(string、number、Boolean、underfined、null)
杂数据类型(object)
number | 数字型,包含整数型和浮点型值 | 0 |
Boolean | 布尔值类型 | false |
string | 字符串类型 | "" |
undefined | 声明变量未赋值 | undefined |
null | 声明变量为空值 | null |
<script> var a = 10, b = 0.123, c = 'abc'; console.log(typeof a); </script>
字面量是源代码中一个固定值的表示法
数字字面量:8、9、10
字符串字面量:”string“
布尔字面量:true、false
toString() | 转换成字符串 | var num=1;alert(num.toString()); |
String()强制转换 | 转换成字符串 | var num=1;alert(String(num)); |
加号拼接字符串 | 和字符串拼接的结果都是字符串 | var num=1;alert(num+"我是字符串") |
toString()和String()使用方法不一样
<script> //1、把数字类型转换成字符串类型 toString() var num = 10; var str = num.toString(); console.log(str); console.log(typeof str); //2、利用String() console.log(String(num)); //3、利用 + 拼接字符串的方法实现拼接效果 console.log(num + ''); </script>
parseInt(string)函数 | 将string类型转换为整数数值型 | parseInt('78') |
parseFloat(string)函数 | 将string类型转换为浮点数值型 | parseFloat('78,21') |
Number()强制转换函数 | 将string类型转换为数值型 | Number('12') |
js隐式转换 | 利用算术运算隐式转换为数值型 | '12'-0 |
举例:
<script> var age = prompt('请输入您的年龄'); //1、parseInt(变量)可以把字符型转换为数字型 得到的是整数 console.log(parseInt(age)); console.log(parseInt('3.14')); //取整 console.log(parseInt('120px')); //120 会去掉px单位 console.log(parseInt('EM120px')); //NAN //2、parseFloat(变量)可以把 字符型的转换为数字型 得到的是小数 浮点数 console.log(parseFloat('3.14')); console.log(parseFloat('120PX')); //120 会去掉px单位 console.log(parseFloat('EM120PX')); //NAN //3、利用Number(变量) var str = '123'; console.log(Number(str)); console.log(Number('12')); //利用了算术运算实现隐式转换 console.log('12' - 0); //12 console.log('123' - '120'); //3 console.log('12' * 1); //123 </script>
Boolean()函数 | 其他类型转成布尔值 | Boolean('true') |
代表空、否定的值会被转换为false。比如:''、0、NaN、null、undefined 其余值都会被转换为true
<script> console.log(Boolean('')); //false console.log(Boolean(0)); //false console.log(Boolean(NaN)); //false console.log(Boolean(null)); //fasle console.log(Boolean(undefined)); //false console.log(Boolean('123')); //true console.log(Boolean('abc')); //true </script>
+加
-减
*乘
/除
%取余
<script> //前置递增运算符 var num = 0; console.log(++num); //后置递增运算符 var age = 0; console.log(age++); </script>
<script> console.log(3 >= 5); //false console.log(2 <= 5); //true console.log(2 = '0'); //赋值 console.log(2 == '0'); //判断 console.log(2 === '0'); //全等 </script>
<script> console.log(3 > 1 && 1 < 8); //true console.log(3 > 1 || 1 < 8); //ture console.log(!true); //false </script>
顺序流程控制是最简单最基本的流程控制,没有特定的语法结构,程序按照代码的先后顺序依次执行
if(条件表达式){ //执行语句 }
if(条件表达式){ //执行语句 } else { //执行语句 }
if(条件表达式1){ //执行语句 } else if(条件表达式2){ //执行语句 } else if(条件表达式3){ //执行语句 } else { //执行语句 }
语法:
条件表达式 ? 表达式1:表达式2
举例:
<script> var num = 10; var result = num > 5 ? '是的' : '不是'; </script>
语法:
switch(表达式){ case value1: //执行语句1 break; case value2: //执行语句2 break; ....... default: //执行最后的语句 }
for (var i = 1;i<=100;i++){ console.log('string'); }
for (var i = 1;i<=100;i++){ console.log('string'); for (var k= 1;k<=100;k++){ console.log('abc'); } }
while(条件表达式){ //循环体 }
do { //循环体 } while (条件表达式)
continue关键字用于立即跳出本次循环,继续下一次循环(本次循环体中continue之后的代码就会少执行一次)
break关键字用于立即跳出整个循环(循环结束)
利用new创建数组
利用数组字面量创建数组
<script> //1、利用new创建数组 var arr = new Array(); //创建空的数组 //2、利用数组字面量创建数组 var Array = []; //创建空的数组 </script>
数组中可以存放任意类型的数据
var arrStrus = ['小白',12,true,28.9];
<script> var Array = []; //创建空的数组 var arrStrus = ['小白', 12, true, 28.9]; console.log(arrStrus); console.log(arrStrus[2]); </script>
通过“数组名[索引号]”的方式一项一项的取出来
<script> var arrStrus = ['小白', 12, true, 28.9]; for (var i = 0; i < 4; i++) { console.log(arrStrus[i]); } </script>
<script> var arrStrus = ['小白', 12, true, 28.9]; console.log(arrStrus.length); </script>
<script> //修改length长度来实现数组扩容 var arr = ['小白', 12, true, 28.9]; console.log(arr.length); arr.length = 5; console.log(arr.length); //修改索引号来实现数组扩容 var arr = ['小白', 12, true, 28.9]; arr[4] = 'abc'; arr[5] = 'def'; console.log(arr); </script>
<script> //1、利用函数关键字自定义函数(命名函数) function 函数名() { //函数体 } //2、函数表达式(匿名函数) var 变量名 = function() {}; var fun = function() { //fun是变量名不是函数名 console.log('函数表达式'); } </script>
先声明函数后调用函数。语法:
function 函数名() { //函数体 } //调用函数 函数名();
函数封装就是八一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口
<script> function getSum() { var sum = 0; for (var i = 1; i <= 100; i++) { sum += i; } console.log(sum); } getSum(); </script>
function 函数名(形参1、 形参2....) { //在声明函数的小括号内是形参 //函数体 } 函数名(实参、 实参2....); //在函数调用的小括号里是实参
举例:
<script> function getSum(sum) { for (var i = 1; i <= 100; i++) { sum += i; } console.log(sum); } getSum(0); </script>
<script> function getSum(sum) { for (var i = 1; i <= 100; i++) { sum += i; } return sum; } console.log(getSum(0)); </script>
arguments是一个伪数组,可以获取传入的参数数量
<script> function fn() { console.log(arguments); } fn(1, 2, 3); </script>
全局作用域:整个script标签,或者是一个单独的JS文件
局部作用域:在函数内部就是局部作用域,这个代码只在函数内部起作用
全部变量在代码的任何位置都可以使用
在全局作用域下var声明的变量是全局变量
局部变量只能在该函数内部使用
在函数内部var声明的变量是局部变量
<script> //1、全局变量 var num = 10; console.log(num); function fn() { console.log(num); } fn(); //2、局部变量 function fun() { var num1 = 10; num2 = 20; } fun(); console.log(num2); </script>
作用域链:内部函数访问外部函数的变量,采取的是链式查找的方式来决定取那个值