JavaScript
基于对象的动态脚本语言 不需要编译
什么是JavaScript?
JavaScript是一种轻量级、弱类型数据的编程语言,简称JS
不仅可以创造对象也可以使用现有的对象
具有跨平台性 只要有js引擎就可以运行 一般浏览器都自带js引擎
嵌入式 html+css+javascript+dom
三个主要组成部分:
1.ECMAScript(核心)
2.DOM(文档对象模型)
3.BOM(浏览器对象模型)
在一个html页面中,javaScript代码可以写在script标签中。script标签可以在任何位置
如何编写JS代码,声明js有几种方式?
1.内部声明:
通过<script>标签声明js代码,这个标签可以写在title下,body中,body下
具体使用情况看业务需求
2.外部声明
新建js文件,在js文件中书写js代码,不需要<script>标签在html页面里使用<script>
标签中的src属性引入该js文件,如果想引入多个js文件,写多个js标签即可
<script type="text/javascript">
let num
</script>
js定义变量
定义变量可使用let 或 var关键字
最新规范推荐使用let
<script type="text/javascript">
//定义变量可使用let 或 var关键字
//最新规范推荐使用let
let num
//赋值 使用 =
num = 10
console.log(num);
js中的数据类型
- undefined-未定义类型:未被赋值的变量,值为undefined
- boolean-布尔类型:值为true/false
- number-数字类型:任何数字(NaN也是number类型,表示“非数”)
- string-字符串类型:值用引号(单引号或者双引号)括起来
- object-对象类型:null、数组、Date等
- function-函数类型:function函数
娇姐:(
基本数据类型
number:string boolean null undefined
number:数字类型(小数,整数,无穷大和非数字)
无穷大:var a=10/0;
非数字:用来辨识本来返回一个数值但实际并未返回数值的操作
string:字符串(单引号,双引号都行)
boolean:布尔类型(两个值分别是true,false)
null:空类型(他的值就是null,typeof判断出来的类型object)
undefined:未定义的类型 var a;中的a
引用数据类型
object 除了基本数据类型而外都是引用数据类型
)
null和undefined的区别(面试题)
null:空值,表示一个变量将来可能指向一个对象
undefined:从未被赋值,将来是否赋值不清楚
①null类型,代表空值,代表一个空对象指针,使用typeof运算得到object,所以你可以认为他是一个特殊的值
②undefined类型,当一个声明了一个变量未初始化时,得到的就是undefined;
③undefined是访问一个未初始化的变量时返回的值,而null是访问一个尚未存在的对象时所返回的值
因此,可以把undefined看作是空的变量,而null看作是空的对象
可使用typeof获取变量数据类型
let num;
console.log(typeof num) //返回undefined
num = 10;
console.log(typeof num) //返回number
num = 'abc';
console.log(typeof num) //返回string
num = true;
console.log(typeof num) //返回boolean
function getDate(){}
console.log(typeof getDate) //返回function
num = [];
console.log(typeof num) //返回object
num = new Date();
console.log(typeof num) //返回object
num = null;
console.log(typeof num) //返回object
NaN、Infinity
NaN,即非数值(Not a Number)是一个特殊的值
NaN和任何数据进行运算结果仍然是NaN。想要判断一个变量是不是NaN时,要使用isNaN()函数
parseInt函数 数据类型不是数据时 返回NaN
console.log(isNaN('5')); //isNaN函数 数据类型是数据时 返回false
console.log(isNaN('abc')); //isNaN函数 数据类型不是数据时 返回true
console.log(parseInt('111'));
console.log(parseInt('abc')); //parseInt函数 数据类型不是数据时 返回NaN
Infinity 即无穷,是一个特殊的值
console.log(10/0); //任何一个数除以0 会返回Infinity
js中的运算符
js是弱类型语言
js中数字类型的数据不区分整数和小数
js运行中会隐式转换数据类型 把字符串类型隐性转变为数字类型
let num1,num2
num1 = '10'
num2 = '5'
console.log(num1*num2);//返回结果为50
== 和 === 的区别
== 只比较数值 会印象转换数据类型然后在比较数值
=== 比较数值和类型 不会转换数据类型 更加严格
console.log(10=='10');//返回结果为true
console.log(10==='10');//返回结果为false
字符串如何转换成数字
Parsefloat():将字符串转换为小数
ParseInt():将字符串转换为整数 向下取整
Number():将字符串装换为数字
let s1,s2
s1 = '10'
s2 = '10.5'
s1 = parseInt(s1)//强制转换数据类型 parseInt强制转换为整数
s2 = parseFloat(s2)//强制转换数据类型 parseFloat强制转换为小数
console.log(s1+s2);//返回结果为20.5 因为+还有连接符的意思 所以需要强制转换为整数和小数类型运算
js流程控制语句
条件语句
1. if
let score = 59
//if小括号中的条件语句 执行结果必须是布尔类型
if(score>=60){
console.log('可以了 圆满了 可以要钱了');
}else{
console.log('挂科了 猩猩的哥哥 狒狒');
}//输出结果为 挂科了 猩猩的哥哥 狒狒
2. if else
let score = 71
if(score>=90){
console.log('优秀');
}else if(score>=80 && score<90){
console.log('良好');
}else if(score>=60 && score<80){
console.log('中等');
}else{
console.log('不及格');
}
//输出结果为 中等
3.switch语句
let level = 1
//switch()里的代码 执行结果是整数或者字符
switch(level){
case 1:
console.log('第一名');
break;
case 2:
console.log('第二名');
break;
case 3:
console.log('第三名');
break;
default:
console.log('不重要了');
}
//返回结果为 第一名
循环语句
1. while语句
let i = 0
//while()代码的执行结果 是布尔类型
while(i<5){
console.log(i);
i++;
}
//返回结果为 0 1 2 3 4
2.do while语句
先执行再判断
let num = 123456
do{
console.log(num%10);
num=Math.trunc(num/10);//Math.trunc取整数部分
}while(num!=0);
//输出结果为 6 5 4 3 2 1
3.for 语句
for(let i= 0;i<5;i++){
console.log(i);
}
//返回结果为0 1 2 3 4
函数定义以及调用
第一种方式: function 函数名( ){ //函数体; }
//定义函数
//1.
function f1(){
console.log('第一种函数定义方式');
}
//函数调用
//函数中的代码只有在被调用时才会执行
f1();
第二种方式: let 函数名 = function(){ //函数体; }
let f2 = function(){
console.log('第二种函数定义方式');
}
f2();
函数的参数与返回值
function add(n1,n2){
return n1+n2;
}
//调用有参函数时 需要传递参数
//返回值需要定义一个变量用来接收返回值
let r = add(1.1,2.2);
console.log(r);//结果为3.3
作用域
使用var定义的变量作用域 只有函数级没有块级(可以在{}里面的变量可以在{}外面使用)
{}叫做块级代码
let 定义的变量 既有函数级又有块级(只能在当前{}里和当前函数里面使用)
ES5之后 官方推荐使用let关键字定义变量
//使用var定义的变量作用域 只有函数级没有块级
//{}叫做块级代码
{
var v1 = 10;
//尽管在{}里 但是{}外也能用 叫做没有块级
}
console.log(v1);//返回结果为10
function f1(){
var v2 = 20;
//只能在函数里面用 函数外面不能用 叫做有函数级
}
console.log(v2);//报错
//let 定义的变量 既有函数级又有块级
{
let s1 = 10;
}
console.log(s1);//报错
//ES5之后 官方推荐使用let关键字定义变量