js基础知识总结:

阅读: 评论:0

js基础知识总结:

js基础知识总结:

js基础知识总结:

1.js中的变量和数据类型

1.标识符:

  • 标识符指的是变量,函数,属性的名字,或者是参数(凡是可以起名字的地方都可以叫做标识符)
  • 标识符的命名规范:
  • 由字母、下划线、数字、$符号组成
  • 不可以以数字开头
  • 不能是系统的关键字
  • 区分大小写
  • 最好使用语义化
  • 驼峰原则: 首字母小写,多个单词组成,从第二个单词的首字母开始都大写;
  • 常量命名: 全部大写,多个单词组成,每个单词之间由下划线分割

2.交换两个变量的值

        // number1:交换两个变量的值var n1=5;var n2=10;//交换n1,n2的值var boxchange=n1n1=n2n2=boxchangeconsole.log(n1,n2);
        var n2=10;// //交换n1,n2的值// var boxchange=n1// n1=n2// n2=boxchange// console.log(n1,n2);// 不适用第三方变量的时候n1=n1+n2n2=n1-n2n1=n1-n2console.log(n1,n2);

3.数据类型

1.原始类型(不可变类型)

数字,字符串,布尔,null,undifined

复杂数据类型:

object 普通对象 var man = {name:‘’,age:23}

​ 特殊对象 全局对象

​ 数组

​ 函数

js中的数据类型分为:数值、字符串、布尔、数组、对象、空(null)、未定义的(undefined)、函数

null和undefined的区别

Null 已定义,并初始化为null。

Undefined:未定义,或者未初始化 。

用来查询数据类型

3.数据类型的转换

3.1 转换成字符串类型

to string()可以把数值转换为字符串类型

var num=10
console.log(String());

string()可以把tostring()不能转换的类型转换掉未定义的和空值

3.2转换成数值类型

number(如果转换的字符串有不是数值的,返回nan)

parselnt()(无法将布尔类型转换成数值类型,返回的结果是nan)

parfloat()与上面的相似,就是这个能转换为浮点型

3.3转换成布尔类型

boolean()

将各种类型的值转化成Boolean类型的规则如下:

Number:任意非0的数值为true,0值和NaN为"false"。

String:所有的非空字符串转化为 true;“”(空字符串)转化成false

Object的任何非空对象都会转化为 true;

在javascript中,只要逻辑表达式不返回undefined不返回null,就都是真的。

4.三元运算符

条件表达式?语句1:语句2

说明:

条件表达式会被作为布尔值进行处理

语句一(当条件表达式为true时执行)

语句二(当条件表达式为false时会执行)

  // var num1=120// var num2=110// var p=num1>num2?'男的':'女的'// console.log(p);

5.判断一个数是奇数还是偶数

// var num=5// if(num%2==0){//     console.log('是偶数');// }// else{//     console.log('是奇数');// }

6.冒泡排序

 var arr = [29,45,51,68,72,97];//外层循环,控制趟数,每一次找到一个最大值for (var i = 0; i < arr.length - 1; i++) {// 内层循环,控制比较的次数,并且判断两个数的大小for (var j = 0; j < arr.length - 1 - i; j++) {// 白话解释:如果前面的数大,放到后面(当然是从小到大的冒泡排序)if (arr[j] > arr[j + 1]) {var temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}console.log(arr);//[2, 4, 5, 12, 31, 32, 45, 52, 78, 89]

7.引用类型和基本类型的区别:

基本类型就类似于在栈空间中保存的数值,而引用类型是在堆空间中保存的,地址在栈空间中。

function f1(person) { // person为形参
person.name = "lisi";
person = new Person("aa",18,10);
}
var p = new Person("zhangsan",18,1000);
console.log(p.name); // zhangsan
f1(p); // 把p对应的地址复制一份给person,person和p对应一个地址,那么修改地址对应的内容,会影响p
console.log(p.name); // lisi
//1.
var num1 = 10;
var num2 = num1; // num2 = 10;
num1 = 20;
console.log(num1); // 20
console.log(num2); // 10

8.date对象

获取当下的时间信息的时候来使用

    var date=new Date()document.write(date);

运行结果是“Mon Aug 21 2023 20:41:21 GMT+0800 (中国标准时间)”

如果我们只想单纯获得当下的年/月/日/星期。

   var date=new Date().getFullYear()console.log(date);//获得年月(month) 星期(day)

注意星期是从0-6,周日是0,如果想用大写的话,利用数组

9.字符串的不可逆性

var str = ‘abc’;

str = ‘hello’;

// 当重新给str赋值的时候,常量’abc’不会被修改,依然在内存中

// 重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变

// 由于字符串的不可变,在大量拼接字符串的时候会有效率问题

10.函数的构造

 // 1.工厂的构造函数// function Hero(name, age, skill, blood) {//     var hero = new Object();//     hero.name = name;//     hero.age = age;//     hero.skill = skill;//     hero.blood = blood;//     hero.attack = function () {//         document.write(this.name + '今年' + this.age + '会' + this.skill + '有' + this.blood)//     }//     return hero;// }// var hero1 = Hero('孙悟空', '500', ['七十二变', '筋斗云'], 500);// document.write( Hero('孙悟空', '500', ['七十二变', '筋斗云'], 500).attack())// 2.自定义构造函数// function Hero(name,age,skill){//    this.name = name;//    this.age=age;//    this.skill=skill//    this.attack=function(){//     document.write(this.name + '今年' + this.age + '会' + this.skill )         }// }// var hero1 =new Hero('孙悟空', '500', ['七十二变', '筋斗云']);// document.write(hero1.attack())// 3.new object 创建对象// var hero = new Object();// hero.name='关羽'// hero.weapon='青龙偃月刀'// hero.equipment=['赤兔马','靴子','头盔']// hero.blood=100;// hero.attack=function(){//     document.write(this.name+'拿着'+this.weapon)// }// hero.attack()// document.write(hero.name)// 3.对象的字面量构造函数方式// var hero = {//     name: '黄忠',//     weapon: '大炮',//     equipment: ['泣血之刃', '破晓', '抵抗鞋'],//     blood: 5000,//     attack: function () {//         console.log(this.name + '举着' +this.weapon + '穿着' +this.equipment + '血量是' +this.blood);//     }// }// console.log(hero.name);// hero.attack();// 构造函数有缺点,对象的方法只能放在构造函数的内部,这样每次创建一个方法就要占用非常多的内存// 给js构造函数设计了一个prototype属性用来存放对象的方法;// function age(aie,ja){//   name= aie,//   ag=ja//   console.log(aie,ja);// }// age(1,98)

11.js中的内置函数

// splice //参数为1个的情况下// 当索引为正数时:// 1.删除此索引以后的所有元素// var arr=[1,5,6,8,9,32,3]// arr.splice(2)// document.write(arr)// 当索引为负数时:// 2.从后往前计算,最后一位是-1,以后的元素全部删除// var arr=[1,5,6,8,9,32,3]// arr.splice(-3)// document.write(arr)//参数为两个的情况下// 2.删除任意数量的项(删除起始位置的下标,删除的项数)// eg// var arr=[1,5,6,8,9,32,3]// arr.splice(3,0) //0的话意思是删除0项// document.write(arr)
// 参数为三个的情况下// 3.在指定的位置插入指定的项(起始下标,0(不删除任何项),要插入的项)//    var arr=[1,8,56,48,61,89,4]//    arr.splice(2,0,'e')//    document.write(arr)// 4.替换任意数量的项(起始下标,要删除的项数,要插入的项)//    var arr=[1,8,56,48,61,89,4]//    arr.splice(2,1,'e')//    document.write(arr)
//slice的用法:// splice只能作用在数组,但是slice可以作用在数组以及字符串上
// 表示切片
// 后边取不到,左开右闭
// 类似substring(substr第二位截取的是长度)

12.斐波那契数列

    var n1 = 1;// 前一个数var n2 = 1;// 当前数var n3;for (var i = 3; i <= 9; i++) {n3 = n2 + n1;n1 = n2;n2 = n3;}console.log(n3);

13.求一组数中中的最大值以及最小值,和其所在的位置

    var numbers = [120, 13, 101, 88, 10, 25];var max = numbers[0];var min = numbers[0];// 最大值的索引var maxIndex = 0;// 最小值的索引var minIndex = 0;for (var i = 1; i < numbers.length; i++) {// 找大的数if (max < numbers[i]) {max = numbers[i];maxIndex = i;}// 找小的数if (min > numbers[i]) {min = numbers[i];minIndex = i;}}console.log(max, min);console.log(maxIndex, minIndex);
var minIndex = 0;for (var i = 1; i < numbers.length; i++) {// 找大的数if (max < numbers[i]) {max = numbers[i];maxIndex = i;}// 找小的数if (min > numbers[i]) {min = numbers[i];minIndex = i;}
}
console.log(max, min);
console.log(maxIndex, minIndex);

本文发布于:2024-02-03 04:54:57,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170690729548782.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:基础知识   js
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23