文章目录
###js的组成部分
背
- ECMAscript:js的核心语法
- DOM:文档对象模型,提供一些属性和方法用来操作dom元素
- BOM:浏览器对象模型,提供一些属性和方法用来操作浏览器
var btn=document.getElementById('btn');
btn.onclick=function(){
alert(1);
this.window.location.href="http:www.baidu.com";//让页面进行跳转
window.location.href; //获取当前页面的地址
}
创建变量的六种方式 背
- var 声明一个变量 es3
- function 声明一个函数 es3
- let 声明一个变量 es6
- const 声明一个常量 es6
- class 声明一个类
- import 基于es6模块导入一个些信息 es6
js命名规范 背
- 区分大小写
- 遵循驼峰命名法,起名字真的时候可以由数字、字母、下划线、$组成,但是不能以数字开头,起名字的时候需要语义化
- 起名字不能是关键字或者保留字
- 关键字:有特殊含义或功能的字
- 保留字:以后有可能成为关键字,现在先留着
两种简单的调试方式
- alert() 在页面弹出
- console.log() 控制台打印
js的数据类型 背
- 基本数据类型
- number 数字
- string 字符串
- boolean 布尔
- null 空
- undefined 未定义
- 引用数据类型
- object 对象
- 数组 []
- 正则//
- Math
- date
- function 函数
- object 对象
- symbol 唯一的数据 es6新增
- BigInt 管理最大值 es6新增
number 数字类型
正数,负数,小数,0,NaN 都是数字类型
string
把字符用单引号双引号包起来的就是字符串
####boolean
true真 false假 主要用于判断
null
空
undefied
未定义
function
函数
function 函数名(传参){
函数体
};
//定义函数
函数名(传参);
//运行函数
//注意:传参如果是字符串就要加''
报错
Uncaught SyntaxError: Invalid or unexpected token//语法错误
对象
- 普通对象:把属性名和属性值用大括号包起来的,多个键值对用,隔开
- 属性名:代表一定特性的名字(一般只有数字和字符串),属性名又叫做"键"(key)
- 属性值:具体的值(可以是任意的数据类型),属性值又叫做"值"(value)
- 数组;[1,2,3,4]
- Math数学对象,主要用于操作数字
Math.random();获取0-1随机数
Math.round();四舍五入
Math.abs();绝对值
- 日期对象
- new Date();最新时间
- 正则
- /\d/
- symbol es6新增,唯一的,永远不会等于其他数,包括本身
把其他数据类型转换为Number数据类型的方法
Number([value])
规则: 字符串:如果是空字符串就是0,如果说字符串中包含非有效数字他的结果就是NaN
布尔类型:true 1 false 0
null类型 0 undefined NaN
对象数据类型: 如果是引用数据类型的转换成数字类型的时候,会隐式先调用toString()这个方法,然后再用Number()方法
console.log(Number('1'));//1
console.log(Number('1PX'));//NaN
console.log(Number(null));//0
console.log(Number(undefined));//NaN
console.log(Number(true));//1
console.log(Number(false));//0
console.log(Number(''));//0
console.log(Number([]));//0
console.log(Number({}));//NaN
console.log(Number(function(){}));//NaN
parseInt([value])把字符串转换为整数
规则:从左到右查找,遇到非有效数字或小数点时停止查找
先转换为字符串
console.log(parseInt('1.5px'));//1
console.log(parseInt(''));//NaN
console.log(parseInt([]));//NaN
console.log(parseInt(undefined));//NaN
console.log(parseInt(null));//NaN
console.log(parseInt({}));//NaN
parseFloat([value])把字符串转换为浮点型,可以识别小数
规则:从左到右查找,遇到非有效数字停止查找,可以识别小数
先转换为字符串
console.log(parseInt('1.5px'));//1.5
console.log(parseInt(''));//NaN
console.log(parseInt([]));//NaN
console.log(parseInt(undefined));//NaN
console.log(parseInt(null));//NaN
console.log(parseInt({}));//NaN
NaN
连自己和自己都不相等,所以不能用它来作为判断
isNaN
用来判断一个数字是否是有效数字,返回结果是布尔数据类型,如果说true说明是非有效数字,如果是false说明是有效数字
会隐式调用Number()方法
isNaN(1)==>false;
isNaN("2")===> false;
isNaN(true)===>false;
isNaN(false)===>false;
isNaN(null)===>false;
isNaN(undefined)===>true;
isNaN({'name':'lili'})=>true;
isNaN([1,2])=>true
isNaN([1])=>false
字符串方法
null和undefined不可以使用toString(),会报错。可以使用String()会转为字符串
//获取字符串长度
var a='aaaaaa';
console.log(a.length);
//获取单个字符
console.log(a[0]);//获取第一个字符
//获取最后一个数字的索引a.length-1
//索引,每个字符都对应一个下标,他从0开始,依次递增
字符串的加减乘除
加法的话除了计算还有字符串拼接的作用,字符串拼接优先级高于数字运算,对于减乘除先转换为number然后再计算,i++与++i除外
注意:跟NaN有关的数学运算,除了字符串拼接,结果都是NaN
console.log('6'/'2');//3
console.log('6'/3);//2
console.log('6'+2);//'8'
console.log('6'*'2');//12
console.log('6'-'2');//4
console.log('6'/undefined);//NaN
var i=1;
i++;
console.log(i);//2
转换为布尔的方法
- Boolean([value]) 转换为布尔
- ![value] 取反
- !![value] 取反取反,相当于没有取反
注意:0 NaN undefined '' null在布尔中为false
console.log(!![]);//true
console.log(!!{});//true
console.log(!!undefined);//false
console.log(!!null);//false
console.log(!!'');//false
console.log(!!NaN);//false
console.log(!!0);//false
null与undefined的区别
null
声明变量的时候,我不知道这个数据类型是什么,就可以先写一个空
获取页面中不存在的元素
undefined
想要获取对象的属性值,但里面没有对应的属性,那这个值就是undefined
声明变量却未赋值就是undefined
函数内设置了形参,但是调用时未传参就是undefined
一个函数内如果没有return返回值,那么输出他的返回结果就是undefined
var str;
console.log(str);//undefined
console.log(aab);//因为没有这个所以为null
var dc={
name:xx,
sex:'男'
}
console.log(dc.name);//xx
console.log(dc.age);//对象内没有所以为undefined
function fn(a,b){
var total=a+b;
return dd=total;
console.log(a,b);
}
fn(1,2);
console.log(dd);//3
console.log(total);//未输出total就是undefined
fn();//undefined undefined 因为没有传实参