JavaScript基础

JavaScript基础

js语言特点:

  1. 检查我们的js有没有语法错误
  2. 预解析 将变量和函数名进行提升
  3. 一行一行执行代码 发现错误 报错,阻止下面代码的继续执行
  4. js依赖于宿主环境

变量命名规范

​ 由字母,数字,下划线,美元符号$组成

  1. 不能以数字开头
  2. 不能是关键字
  3. 遵守驼峰命名法(首字母小写,后面单词的首字母要大些)

1.数据变量

1.1数据类型

  1. 简单的数据类型
简单数据类型说明默认值
Number数字型,包含整型值和浮点型值,如21,0.210
Boolean布尔值类型,如true、false、,等价于1和0false
String字符串类型,如”张三“注意咱们js里面,字符串都带引号“”
Undefinedvar a;声明了变量a但是没有给值,此时a=undefinedUndefined
Nullvar a = null;声明了变量a为空值null
  1. 字符串转义符
转义符解释说明
\n换行符,n 是 newline 的意思
\ \斜杠 \
’ 单引号
"”双引号
\ttab 缩进
\b空格 ,b 是 blank 的意思
  1. 字符串长度

      var strMsg = "我是帅气多金的程序猿!";
       alert(strMsg.length); // 显示 11
    
  2. 字符串拼接

    • 数值相加,字符相连
    • 引引加加
    • `${}`

1.2获取变量数据类型

  1. typeof
var num = 18;
console.log(typeof num) // 结果 number

1.3数据类型转换

  1. 转换为字符串

    • toString var num = 1;alert(num.toString())
    • String var num = 1;alert(String(num))
    • 加号拼接字符串 varnum = 1;alert(num + ‘’)
  2. 转换为数字型

    • parseInt(变量) 只能得到整数
    • parseFloat(变量) 可以得到小数
    • Number(字符串) 字符串里只能是数字
    • 利用数字运算
  3. 转换为布尔型

    所有的数字全为真,0为假

    所有的字符串全为真,’'为假

    其余全为假

2.运算符

2.1递增运算符

  • ++num 先自加,后返回值
  • num++ 先返回值,后自加

2.2逻辑运算符

  • && 简称“与” and 两边都是true,才返回true //(找假)
  • || 简称“或” or 两边都是false,才返回false //(找真)
  • ! 简称“非” not

2.3运算符优先级

优先级运算符顺序
1小括号()
2一元运算符++ – !
3算数运算符先 * / % 后 + -
4关系运算符> >= < <=
5相等运算符== != === !==
6逻辑运算符先&& 后||
7赋值运算符=
8逗号运算符,

3.containue,break, return的区别

  • containue:跳出本次循环,继续执行剩余次数循环
  • break:跳出整个循环,循环结束
  • return: 不仅可以退出循环,还能够返回 return 语句中的值,同时还可以结束当前的函数体内的代码

4.函数

4.1冒泡排序

<script>
        // 冒泡排序
        // var arr = [5, 4, 3, 2, 1];
        var arr = [4, 1, 2, 3, 5];
        for (var i = 0; i < arr.length - 1; i++) { // 外层循环管趟数 
            for (var j = 0; j < arr.length - i - 1; j++) { // 里面的循环管 每一趟的交换次数
                // 内部交换2个变量的值 前一个和后面一个数组元素相比较
                if (arr[j] < arr[j + 1]) {
                    var temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        console.log(arr);
    </script>

4.2构造函数

  1. 构造函数名字首字母要大写
  2. 我们构造函数不需要return 就可以返回结果
  3. 我们调用构造函数 必须使用 new
  4. 我们只要new Star() 调用函数就创建一个对象 ldh {}
  5. 我们的属性和方法前面必须添加 this

4.3new关键字执行过程

  1. 在内存中创建了一个空的对象
  2. this 就会指向刚才创建的空对象
  3. 执行构造函数里面的代码 给这个空对象添加属性和方法
  4. 返回这个对象
  5. 内部原型_proto_指向构造函数的原型

4.4自调用函数

开启一个新的作用域,防止命名冲突

连续写自调用函数每个自调用函数要写;(建议前面)

写上window, undefined,方便代码压缩

(function() {
    function() {
        *****
    }
    window.Food = Food;
})();
var food = new Food();

5.Math对象

属性,方法名功能
Math.PI圆周率
Math.floor()向下取整
Math.ceil()向上取整
Math.round()四舍五入版;就近取整(-3.5,结果是-3)
Math.abs()绝对值
Math.max()/Math.min()最大值/最小值
Math.random()获取范围在[0,1)内的随机值

5.1获取指定范围内的随机整数

function getRandom(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(getRandom(1, 10));
// 5. 随机点名  
var arr = ['张三', '张三丰', '张三疯子', '李四', '李思思', '王五'];
// console.log(arr[0]);
console.log(arr[getRandom(0, arr.length - 1)]);

6.日期对象

6.1格式化日期年月日

<script>
        // 格式化日期 年月日 
        var date = new Date();
        console.log(date.getFullYear()); // 返回当前日期的年  2019
        console.log(date.getMonth() + 1); // 月份 返回的月份小1个月   记得月份+1 呦
        console.log(date.getDate()); // 返回的是 几号
        console.log(date.getDay()); // 3  周一返回的是 1 周六返回的是 6 但是 周日返回的是 0
        // 我们写一个 2019年 5月 1日 星期三
        var year = date.getFullYear();
        var month = date.getMonth() + 1;
        var dates = date.getDate();
        var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
        var day = date.getDay();
        console.log('今天是:' + year + '年' + month + '月' + dates + '日 ' + arr[day]);
</script>

6.2格式化日期时分秒

<script>
        // 格式化日期 时分秒
        var date = new Date();
        console.log(date.getHours()); // 时
        console.log(date.getMinutes()); // 分
        console.log(date.getSeconds()); // 秒
        // 要求封装一个函数返回当前的时分秒 格式 08:08:08
        function getTimer() {
            var time = new Date();
            var h = time.getHours();
            h = h < 10 ? '0' + h : h;
            var m = time.getMinutes();
            m = m < 10 ? '0' + m : m;
            var s = time.getSeconds();
            s = s < 10 ? '0' + s : s;
            return h + ':' + m + ':' + s;
        }
        console.log(getTimer());
    </script>

6.3获得Date的总毫秒数

<script>
        // 获得Date总的毫秒数(时间戳)  不是当前时间的毫秒数 而是距离1970年1月1号过了多少毫秒数
        // 1. 通过 valueOf()  getTime()
        var date = new Date();
        console.log(date.valueOf()); // 就是 我们现在时间 距离1970.1.1 总的毫秒数
        console.log(date.getTime());
        // 2. 简单的写法 (最常用的写法)
        var date1 = +new Date(); // +new Date()  返回的就是总的毫秒数
        console.log(date1);
        // 3. H5 新增的 获得总的毫秒数
        console.log(Date.now());
    </script>

6.4倒计时效果

<script>
function countDown(time) {
            var nowTime = +new Date(); // 返回的是当前时间总的毫秒数
            var inputTime = +new Date(time); // 返回的是用户输入时间总的毫秒数
            var times = (inputTime - nowTime) / 1000; // times是剩余时间总的秒数 
            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('2019-5-1 18:00:00'));
        var date = new Date();
        console.log(date);
</script>

6.5 padStart 获取2019-05-01 18:00:00的字符串方法

//padStart(长度, 要填充的字符串)
<script>
    function countDown(time) {
    var dt = new Date();
    var y = dt.getFullYear();
    var m = (dt.getMonth() + 1).toString().padStart(2, '0');
    var d = dt.getDate().toString().padStart(2, '0');
    var hh = dt.getHours().toString().padStart(2, '0');
    var mm = dt.getMinutes().toString().padStart(2, '0');
    var ss = dt.getSeconds().toString().padStart(2, '0');
    return y + '-' + m + '-' + d + ' ' + hh + ':' + mm + ':' + ss;
}
</script>    

7.数组对象

7.1创建数组的两组方法

  1. 字面量方式
var arr = [1, 2, 3];
  1. new Array()
// var arr1 = new Array();  // 创建了一个空的数组
// var arr1 = new Array(2);  // 这个2 表示 数组的长度为 2  里面有2个空的数组元素 
var arr1 = new Array(2, 3); // 等价于 [2,3]  这样写表示 里面有2个数组元素 是 2和3
console.log(arr1);

7.2检测是否为数组方法

// (1) instanceof  运算符 它可以用来检测是否为数组
        var arr = [];
        var obj = {};
        console.log(arr instanceof Array);
        console.log(obj instanceof Array);
// (2) Array.isArray(参数);  H5新增的方法  ie9以上版本支持
        console.log(Array.isArray(arr));
        console.log(Array.isArray(obj));

7.3添加删除数组元素方法

  1. push() 推 在数组末尾添加

  2. pop() 删除数组的最后一个元素

  3. splice(a,b,3) 删除数组(开始删除位置的索引,删除的数目,原数组补位(可以不写))

    const arr = [4,5,6,7,8,9];
    console.log(arr.splice(1,2,3));//[5,6]
    console.log(arr);//[4,3,7,8,9]
    
  4. unshift() 在数组的开头添加

  5. shift() 删除数组的第一个元素

7.4数组排序

<script>
        // 数组排序
        // 1. 翻转数组
        var arr = ['pink', 'red', 'blue'];
        arr.reverse();
        console.log(arr);

        // 2. 数组排序(冒泡排序)
        var arr1 = [13, 4, 77, 1, 7];
        arr1.sort(function(a, b) {
            //  return a - b; 升序的顺序排列
            return b - a; // 降序的顺序排列
        });
        console.log(arr1);
</script>

7.5获取数组元素索引号方法(indexOf,lastIndexOf)

  1. indexOf(数组元素) 作用就是返回该数组元素的索引号 从前面开始查找
  2. 只返回第一个满足条件的索引号
  3. 如果在该数组里面找不到元素,则返回的是 -1
  4. lastIndexOf(数组元素) 作用就是返回该数组元素的索引号 从后面开始查找

7.6伪数组转为数组

Array.from(伪数组)

var arguments = {
     0: 1,
     1: 2,
     2: 3,
     length: 3,
     }
//把伪数组转为数组
var arr = Array.from(arguments);
//var arr = Array.prototype.slice.call(arguments);
//var arr = arr.slice.call(arguments);
arr.push(2);
console.log(arr)

7.7求数组最大值

(…arr)

var arr = [1, 2, 3, 7, 8, 9];
console.log(Math.max(...arr));

7.8 some(有一条条件满足返回true)

const arr = [1,2,3,4];
const i = 3;
const res = arr.some((item)=>{
    return item == i
})

7.9 every(条件都满足返回true)

const arr = [1,2,3,4];
const i = 3;
const res = arr.every((item)=>{
    return item > i
})

7.10 过滤数组filter() (返回一个满足条件的新数组)

const arr = [1,2,3,4];
const newArr = arr.filter((item)=>{
    return item > 2//[3,4]
})

7.11 拼接数组concat() (返回一个新数组)

const arr = [1,2,3];
const arr1 = [4,5,6];
console.log(arr.concat(arr1))//[1,2,3,4,5,6]

7.12 删除数组slice() (返回一个新数组)

const arr = [9,8,7,6]
console.log(arr.slice(0,3))//[9,8,7](返回的是一个新数组,0开始位置索引,3结束位置索引,不包括3)

7.13 数组去重

const arr = [1, 1, 2, 3, 4, 3];
const newArr = Array.from(new Set(arr));
//新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值,Array.from()把伪数组转成数组
console.log(newArr); //[ 1, 2, 3, 4 ]

7.14 map遍历

let arr = [
  	{title:'aaa',read:50},
 	{title:'bbb',read:50}
];
let newArr = arr.map((item, index, arr)=>{
  	let json = {}
 	json.t = `${item.title}`;
   	json.r = item.read+100return json
});
//[
//    {t:'aaa',r:150},
//    {t:'bbb',r:150}
//]

//map方法给数组添加属性
res.data = res.data.map(({...item},i) => ({
	...item,
	supperId: i
}))

8.字符串

8.1数组转换为字符串

  1. toString() 将我们的数组转换为字符串

    var arr = [1, 2, 3];
    console.log(arr.toString()); // 1,2,3
    
  2. join(分隔符)

    var arr1 = ['green', 'blue', 'pink'];
    console.log(arr1.join()); // green,blue,pink
    console.log(arr1.join('-')); // green-blue-pink
    console.log(arr1.join('&')); // green&blue&pink
    

8.2根据位置返回字符

  1. charAt(index) 根据位置返回字符
var str = 'andy';
console.log(str.charAt(3));
// 遍历所有的字符
for (var i = 0; i < str.length; i++) {
console.log(str.charAt(i));
}
  1. charCodeAt(index) 返回相应索引号的字符ASCII值 目的: 判断用户按下了那个键
console.log(str.charCodeAt(0)); // 97
  1. str[index] H5 新增的
console.log(str[0]); // a

8.3字符串操作方法

  1. concat(‘字符串1’,‘字符串2’…) 连接两个或多个字符串,拼接字符串
var str = 'andy';
console.log(str.concat('red')); //andyred
  1. substr(‘截取的起始位置’, ‘截取几个字符’);
var str1 = '改革春风吹满地';
console.log(str1.substr(2, 2)); // 第一个2 是索引号的2 从第几个开始  第二个2 是取几个字符
  1. substring(start,stop);
var str1 = 'Hello world!';
console.log(str1.substring(3)); // lo world!(从index = 3到后面的所有字符串)
console.log(str1.substring(3,7)); // lo w(从index = start 处到index = stop-1 处的所有字符,其长度为 stop 减 start。)
  1. 替换字符 replace(‘被替换的字符’, ‘替换为的字符’) 它只会替换第一个字符
var str = 'andyandy';
console.log(str.replace('a', 'b'));
// 有一个字符串 'abcoefoxyozzopp'  要求把里面所有的 o 替换为 *
var str1 = 'abcoefoxyozzopp';
while (str1.indexOf('o') !== -1) {
     str1 = str1.replace('o', '*');
}
        console.log(str1);
  1. 字符转换为数组 split(‘分隔符’)
var str2 = 'red, pink, blue';
console.log(str2.split(','));
var str3 = 'red&pink&blue';
console.log(str3.split('&'));
  1. 字母大小写

    • 小写变大写 toUpperCase

    • 大写变小写 toLowCase

      驼峰命名法

<script>
        function Name(str) {
            var arr = str.split('-');
            var newStr = arr[0];
            for (var i = 1; i < arr.length; i++) {
                newStr += arr[i][0].toUpperCase() + arr[i].substr(1);
            }
            return newStr;
        }
        var str = 'get-element-by-id';
        console.log(Name(str));
</script>

9.判断基本数据类型

Object.prototype.toString.call( )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值