一、变量

var :定义/声明变量

var myname = 'zhangsan'; // 声明变量
myname = 'lisi'; // 重新声名变量
console.log(myname); // 控制台输出最后定义的值

var age = 18,addres = '火影村', money = 1.8; // 声明多个变量

var sex; // 声明不赋值
conlose.log(sex); // 结果是 undefind

qq = 123456;
conlose.log(qq); // 不声明吗,直接赋值,不报错,不提倡

变量名命名规范:

  • 由字母(a-zA-Z)数字(0-9),下划线(_),美元符号($)组成
  • 严格区分大小写,不能以数字开头,不能是关键字、保留字,如:var、for、while...
  • 遵守驼峰命名法,首字母小写,后面单词首字母大写

二、变量的数据类型

JS的变量数据类型是只有在程序运行过程中,根据等号右边的值来确定的

简单数据类型:

  • number   ——   数字型   ——   0,1,2
  • boolean   ——  布尔型   ——   true/false
  • string   ——  字符型   ——   " ",' ',引号
  • undefined   ——  声明未赋值   ——   undefined
  • null    —— 空值   ——   null
  • isNaN()   ——   判断非数字,是数字返回 false,不是返回 true
  • length   ——   str.length 检测字符串长度

三、数据类型转换

  • 1、转换为字符串 toString()
    var num = 1;
    console.log(num.toString());

String() // 强制转换

    var num = 1;
    console.log(String(num));
  • 2、转换为数字型
    ParseInt(变量); // 取整
    ParseFloat(变量); // 浮点型
    Number(变量);  // 强制转换
  • 3、转换为布尔型
    Boolean(值); // 空、否定的值转换为false,其余转换为true

四、运算符

  • 普通运算符
    +       连接符,数字相加,字符相连
    -       数字相减
    *       数字相乘
    /       数字相除
    %       取余 10%3 == 1;
    ++i     前置递增,自增一,先自增,后返回值
    i++     后置递增,自增一,先返回值,后自增
  • 逻辑运算符
    &&    逻辑与、与、and
    ||    逻辑或、或、or
    !    逻辑非、非、not 取反符
  • 短路运算(逻辑中断)

当有多个表达式时,左边的表达式可以确定结果时,就不再继续运算右边的表达式

五、流程控制

顺序结构 --> A --> B --> 
分支结构 条件执行 --> 判断 --> B -->
               ↓
                A -->       
循环结构 A <-------
       判断↓   →   ↑ yes
          no
  • 分支结构:
if(条件表达式){
    条件成立执行语句    
}    
  • 多分支语句
if(条件表达式){
    语句1;
}else if{
    语句2;
}else{
    最后语句
}     
  • 三元运算:

    • △ 条件表达式?表达式1:表达式2
    • 如果条件结果为真,则返回表达式1的值,为假则返回表达式2的值
  • Switch 语句
switch(表达式){
    执行语句1;
    break;
case value2:
    执行语句2;
    break;
default:
    最后语句;        
}

循环语句

  • for循环
for(初始化变量; 条件表达式; 操作表达式){
    循环体;
}
  • while循环
var i = 0; // 初始化变量
while(条件表达式){
    循环体;
    i++; // 操作表达式
}

六、函数

  • 函数的使用:
// 声明函数
function 函数名(){
    函数体
}
函数名(); // 调用函数,不调用,不执行
  • 函数的参数:
function 函数名(形参1, 形参2...){
    函数体
}
函数名(实参1, 实参2...)

形参:形式上的参数,函数定义的时候传递的参数,当前未知
实参:实际上的参数,函数调用时传递的参数,实参是传递给形参的
arguments // 存储传递的所有实参,展示形式时一个伪数组,具有 length 属性,按索引方式存储数据,不具有数组的push、pop等方法

 function fn() {
             console.log(arguments); // 里面存储了所有传递过来的实参 arguments = [1, 5, 3, 4, 5]
              // console.log(arguments.length);
              // console.log(arguments[1]);
              // 我们可以按照遍历数组的方式遍历arguments            
              for (var i = 0; i < arguments.length; i++) {
                  console.log(arguments[i]);            
               }        
}        
fn(1, 5, 3, 4, 5)
  • 函数类型

    • 1、利用函数关键字定义函数(命名函数)
function fn(){
    函数体;
}
fn();
  • 2、函数表达式(匿名函数)
var fn = function(){
    函数体;
}
fn(); // fn 是变量名,不是函数名
  • JS作用域:就是代码名字(变量)在某个范围内起作用和效果,目的是为了提高程序的可靠性、减少命名冲突

    • 全局作用域:整个script标签、或者是一个单独的JS文件
    • 局部作用域(函数作用域):在函数内部就是局部作用域,这个代码的名字只在函数内部起作用和效果
  • 根据作用域的不同,变量分为全局变量和局部变量

    • 全局变量:在全局作用域下的变量,在全局下可以使用
      注:如果在函数内部,没有声明直接赋值的变量也属于全局变量
    • 局部变量:在局部作用域下的变量或在函数内的变量
      注:函数的形参也可看做局部变量

七、对象

对象创建:
1、字面量创建

var mr = {
    uname:'鸣人';
    sex:'男';
    skill:function(){
        console.log('影分身');    
    }
}
console.log(mr.uname); // 鸣人
mr.skill();  // 影分身

2、new object创建对象

var mr = new.Object();
mr.uname = '鸣人';
mr.sex = '男';
mrr.skill = function(){
    console.log('影分身');
}
console.log(mr.uname); // 鸣人
mr.skill(); // 影分身

3、构造函数:

function Star(){  // 首字母大写
    this.属性 = 值;
    this.方法 = function(){
        console.log('hi~');            
    }
}
new Star(value1,value2...);  // 调用构造函数(必须使用 "new")
console.log(Star.属性);

遍历对象

for(var k in obj){
    console.log(k); // 输出属性名
    console.log(obj[k]); // 输出属性值
}

内置对象

  • Math :数学对象
Math.PI(); // 获取圆周率
Math.max(); // 最大值
Math.min(); // 最小值
Math.abs(); // 绝对值
Math.floor(); // 向下取整
Math.ceil(); // 向上取整
Math.round(); // 四舍五入 
Math.random(); // 随机
function getRandom(min, max){
    return Math.floor(Math.random()*(max-min+1)+1); 
}
console.log(getRandom(0,100)); // 输出 0 ~ 100 之间的随机整数
  • Date: 日期对象
var date = new Date(); // 如果没有参数,返回当前系统时间
var date1 = new Date(2021,10,28); // 数字型
var date2 = new Date('2021-10-28 15:50:20'); // 字符型
console.log(date1); // 返回的是 11月,不是10月
  • 获取当前系统 年 月 日 时 分 秒 周几
var date = new Date();
date.getFullYear(); //返回当前日期的年份 2021
date.getMonth() + 1; //返回当前日期的月份 必须+1   [0,1,2...11]
date.getDate(); //返回的是几号
date.getDay(); //返回周几 1是周一 6是周六 0是周日
date.getHours();   //时
date.getMinutes(); //分
date.getSeconds(); //秒
  • 获取时间戳
var date = +new Date(); // 常用
Date.now(); // H5新增
var date1 = new Date();
console.log(date1.getTime()); // 不常用
console.log(date1.valueOf()); // 不常用
  • 时间戳转换
d = parseInt(总秒数/ 60/60 /24) 计算天数​    
h = parseInt(总秒数/ 60/60 %24) 计算小时​    
m = parseInt(总秒数/ 60%60) 计算分数​    
s = parseInt(总秒数%60) 计算秒数
  • 倒计时案例
function countDown(time) {
    var newTime = +new Date(); //返回当前时间总的毫秒数
    var inputTime = +new Date(time); //返回用户输入时间总的毫秒数    
    var times = (inputTime - newTime) / 1000; //剩余时间总的秒数    
    var d = parseInt(times / 60 / 60 / 24); //天    
    d = d < 10 ? '0' + d : d;    
    var h = parseInt(times / 60 / 60 % 24); //时    
    h = h < 10 ? '0' + h : h;    
    var m = parseInt(times / 60 % 60); //分    
    m = m < 10 ? '0' + m : m;    
    var s = parseInt(times % 60); //秒     
    s = s < 10 ? '0' + s : s;    
    return d + '天' + h + '时' + m + '分' + s + '秒';
}
    console.log(countDown('2021-10-28 00:00:00'));
  • 数组对象
arr.push(value1,value2...); // 末尾添加一个或多个
arr.unshift(value1,value2...); // 开头添加一个或多个
arr.pop(); // 删除最后一个元素
arr.shift(); // 删除第一个元素
arr.reverse(); // 翻转数组,无参数
arr.sort(); // 排序
//*---冒泡排序---*
var arr = [1,7,6,2,9];
arr.sort(function(a,b){
    return a-b; // 升序
    return b-a; // 降序
})
arr.indexOf('李二'); // 返回该数组元素的索引,从前往后,只返回第一个满足条件的索引,如果没有返回-1
arr.lastindexOf('李二'); // 返回该数组元素的索引,从后往前,只返回第一个满足条件的索引,如果没有返回-1
arr.toString(); // 数组转化为字符串
arr.join('&'); // 数组转为字符串,不带参数默认用逗号连接
newarr = arr1.concar(arr2); // 合并数组,原数组不变,返回新数组
arr.slice(begin,end); // 截取数组元素,返回新数组,
               //传一个值截取包括这个索引后的所有元素,
               //传两个值截取包括开始索引到结束索引之间所有元素,不包括结束索引元素
arr.splice(begin,num); // 数组删除,返回被删除数组,原数组会改变 begin: 开始索引,num: 删除数量
最后修改:2023 年 06 月 13 日
如果觉得我的文章对你有用,请随意赞赏