Java Script中值得收藏的学习笔记(总结分享)

发布时间:2022-05-16 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Java Script中值得收藏的学习笔记(总结分享)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
今天给大家带来了值得收藏的JavaScript初级学习笔记,含有很多小知识,赶快码住看一看吧!

什么是JavaScript?

JavaScript是一种运行在客户端的脚本语言


基本输入输出语句

功能语句
打印输出console.LOG()
弹出输出框alert
弹出输入框prompt
文件写入document.wrITe(’’)
  • 小理论:
    console.log可以输出任何类型的数据,alert只能输出String类型的数据,且只能输出第一个数据,如果alert输出的是对象会自动调用toString()方法。

变量

声明变量 VAR (name)

  • 一些注意事项
    • 一次声明多个变量的时候必须用逗号进行隔开,而且必须换行,写在同一行的多个声明变量会无效。

    • 未初始化的变量直接输出结果是unDFined

    • 变量的命名规范: 字母数字下划线美元符号(不以数字开头)

    • 变量初始化中,单引号和双引号没有区别


数据类型

JavaScipt是一种> 动态/弱类型 语言

Num数字型Boolean布尔型Str字符串型Undefined未知的值Null空

js的变量数据类型是只有程序在运行过程中,根据等号右边的值来确定的,也被称为动态数据类型

常用语句:

IsNAN() //判断值是否为非数字
//转义符: \n换行 \t缩进 \b空格
str.length  //获取字符串长度

小理论

  • undefined和数字相加,结果是NaN

  • null+1等于1

  • PRompt取过来的值是字符型.

对于prompt取值做加法,有以下加法案例:

//demo onevar a,
	b
	;a = parseint(prompt('请输入第一个值'));
	b = parseInt(prompt('请输入第二个值'));
	var c = a + b;
	alert (c);
	//demo two
	var a = prompt('请输入第一个值');
	var b = prompt('请输入第二个值');
	var c = Number(a) + Number(b);
	alert (c);

字符串转换(chrom颜色为黑)

  • 变量.toString()
  • String()强制转换
  • 隐式转换:+拼接
  • 字符串模板拼接 我的年龄是${age}岁 (注意反引号不要掉了)

数字型转换(chrom颜色为蓝)

  • Parselnt()转换为整数型
  • parseFloat()转换为浮点型
  • Number()强制转换函数
  • 隐式转换:- * / 算运算隐式转换

布尔型转换(chrom颜色为蓝)

  • 空、否定会被转换为false:如 ‘’、 0 、 NaN 、 null 、 undefined
    其余全部为true

运算符

==默认转换数字类型,会把字符型转换成数字型
===全等, 要求数值和数据类型都一样

优先级:

  • 括号

  • 单目 (右结合右至左)

  • 算数*/%

  • 位移

  • 关系

  • 相等

  • 逻辑&^| &&||

  • 赋值

  • 逗号


@R_512_1756@

  • if没什么好说的
  • switch注意事项:
    case的值判断是全等运算判断

数组

  • 创建数组的方式
    1.利用new创建数组
var arr = new Array() //注意的是,new A必须大写
var arr = new Array(2); //表示数据长度2
var arr = new Array(2, 3); //表示里面有两个元素是2和3

2.利用字面量创建数组

var arr = [];

3.获取数组的长度

arr.length

也可通过arr.length = (Number)的方式来修改数组长度

注意点:

  • 多余的地址/空地址/未定义数组元素默认值为undefined
    c语言举例,字符数组默认后面都是有一个\0结束的,而下标越界会导致程序错误,JS这样设置的好处就是可以不定义数组长度,或者预先给到地址空间。
    4.实现数组迁移,从而不需要定义索引/下标变量
newArry[new.Arry.length] = arr[i++];

数组的常用内置对象

1.判断数组

// var arr = [];
arr instanceof Array //Instanceof运算符判断是否为数组
Array.isArray(arr)  //isArray判断是否为数组

2.添加数组元素

arr.push() //在数组最后添加一个或多个数组元素
arr.unshift() //在数组最前面添加一个或多个数组元素

实用:push可以实现给新的空数组赋值,且push和unshift都有返回值,为新数组的length

3.删除数组元素

arr.pop()  //删除数组中最后一个元素
arr.shift()  //删除数组中第一个元素

有返回值,为删除的元素值

4.翻转/逆置数组

arr.reverse()

5.数组排序

arr.sort() //对个位数进行冒泡排序

理论:为什么说是对个位数进行冒泡排序,因为sort比较数组会先把数组转换成字符串,所以77会比8更先,但是如果有了比较函数(compareFunction)的指定,就能实现按要求排列

arr.sort解决方案

arr.sort(function(a,b)) {
	return a - b;
	//return b - a

a - b为升序排序,b - a为降序排序

6.查找数组

arr.indexOf('word');

从前往后查找返回数组满足条件第一个元素的索引号,如果找不到则返回-1

arr.lastIndexOf('word');

从后往前查找返回数组满足条件第一个元素的索引号,如果找不到则返回-1

7.转换成字符串

arr.toString() //数组转换成字符串
arr.join() //将数组转换成字符串,且括号内可以写分隔符,表示用什么符号格式进行分隔 arr.join('&')

arguments 伪数组 只有在函数中能够使用

同样按照下标的方式存储数据,可以不定义长度实现形参接收


函数

  • 声明函数:

  • Function 函数名 () { }

  • var 变量名 = Function () { } 函数表达式(匿名函数

  • 预解析

    就是把JS中所有的var和function提到当前作用域的最前面

  • 变量预解析
    提前所有的变量声明(不提赋值操作)

  • 函数预解析
    提前所有的函数声明(不调用函数)
    → 所以要额外注意函数表达式和声明函数的预解析

理论:

  • 如果形参多于实参,按前取;如果有实参没有被传值,默认是undefined
  • Return返回一个值,但是如果return[ ] 且有多个表达式以逗号隔开,那返回值会是整个[]的 所有 运算结果
  • !!如果函数没有返回值,那么返回的是undefined !!
  • 在函数内部直接赋值的变量属于全局变量
  • 函数的形参是局部变量
  • 块级作用域: {} (es6新增,其他版本在括号里面定
    义的变量也能在外面调用
  • 作用域链:多个函数嵌套的时候会形成作用域链,子函数能访问父函数的块作用域

对象

  • 什么是对象?
    对象是一组无序的相关属性和方法的集合(字符串,数值,数组,函数)
    在其他语言中,类似 >结构体 >字典

创建自定义对象和对象属性、对象方法:

  1. 字面量创建
var obj = {
	name:'姓名',
	age : 999,
	//*方法*冒号后跟一个*匿名函数*
	printf:function() {
		console.log('hello world');
	}
	}

记忆方法↓:

  • 直接给对象名、属性冒号跟值+语句结束逗号
  • 方法用冒号
  • 取值:对象名.属性名 or 对象名[‘属性名’]
  • 调用对象方法: 对象名.方法名();
@H_126_452@
  • new object
  • var obj = new Object();
    obj.name = '李昂';
    obj.age = 999;
    obj.printf:function(){
    	console.log('hello world');
    	}

    记忆方法↓:

    • var对象名 = new Object (); 不加分号
    • 对象名.属性 = 取值 + 分号
    • 方法用冒号
    • 取值:对象名.属性名 or 对象名[‘属性名’]
    • 调用对象方法: 对象名.方法名();

    3.构造函数

    function Obj (Uname, Uage) {
    this.name = Uname;
    this.age = Uage;
    this.printf = function(infoms){
    	console.log(infoms);
    	}
    	}

    记忆方法↓:

    • 类似函数声明,但是构造函数函数名首字母必须大写,this.属性
    • 方法用等号
    • 构造函数必须得有变量传值,构造函数的方法也必须有变量传值
    • 调用构造函数 var 变量 = new 构造函数名(传递的值)
    var myobj = new Obj('李昂', '999');//可以理解为创建了一个变量指定了构造函数
    console.log(myobj.name);
    console.log(myobj['age']);
    obj.printf('hello world');

    new的执行过程

    • new构造函数会在内存中创建一个空的对象

    • this就会指向刚才创建的对象

    • 接着依次执行属性、方法,并返回

    新循环遍历

    For (变量 in 对象){
    }
    这里的变量是属性值做遍历
    属性的的输出:consolo.log(对象[变量]);
    程序员在for in 的变量喜欢写Key或者i

    一些可用内置对象:

    Math.PI //求圆周率
    Math.max()//返回最大数值(如果无值返回负无穷大)
    Math.abc ()//取绝对值
    Math.floor()//向下取整
    Math.ceil()//向上取整
    Math.round()//四舍五入(五特殊 往大了取)
    • 随机数
    Math.random() ;
    • 返回一个随机浮点数【0,1)括号里不跟参数
      ↓ 扩展:得到自定义最大值和最小值中间的随机函数
    Function getRandomInt(min, max) {
    	min = Math.ceil(min); //规范值语句 可省
    	max = Math.floor(max); //规范值语句 可省
    	return = Math.floor(Math.random() * (max - min + 1) + min);
    • new Date()调用日期对象 不跟参数返回系统时间
    • (‘2021-10-10 8:00:00’)字符串输出

    • (2021, 10, 10)数字输出 月份从0开始11结束 故而要在月份的基础上+1

    • 变量.getDay()获取当前星期,星期日从0开始 到星期六6结束 获取到的值是一个数字
      ↓规范获取当前时间 demo
    var date1 = new Date;
    var year = date1.getFunllYear();
    var month = date1.getMonth();
    var dates = date1.getDate();
    var day = date1.getDay();
    var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
    alert('今天的日期是:' + year + '年' + (month+1) + '月' + dates + '日' + arr[day]);

    ==值得注意的是,必须使用变量调用Date这个构造函数

    基本包装类型:

    • 就是把简单数据类型包装成复杂数据类型,这样基本数据类型就有了属性和方法,那么一般来说在浏览器里面JS引擎会自动帮我们把简单数据类型包装成复杂数据类型
    var str = 'lion';
     console.log(str.length);
     //JS如何给我们的数据包装
     var temp = new String('lion');//定义一个临时构造函数包含初始化的字符串
     str = temp; //把构造函数赋给值类型
     temp = null; //最后舍弃临时变量
    • 一些可用的字符串内置对象
    1. 查找字符串
    str.indexOf('要查找的字符串',[起始位置]);
    //demo:
    var str = '我的名字是什么,名字不重要';
    console.log(str.indexOf('名字', 3));
    1. 查找指定字符
    str.charAt(0); //返回指定下标的字符
    str.charCodeAt(0); //返回指定下标的ASCII码
    1. 拼接字符串
    str.concat('word') //拼接字符串(开发中隐性拼接居多)
    1. 查找某一连续字符
    str.substr('抓起始位置', '抓几个字符'); //查找某一连续字符
    1. 替换字符
    str.replace('被替换的字符', '替换为字符') //如果字符串中有重复的字符,只会替换第一个
    1. 字符串转换成数组
    split('分隔符') //把字符串转换为数组(被转换字符串中必须要写分隔符,而且要与split的分隔符统一!)

    一些传参和类型的–
    理论深入:

    • 简单类型又被称为基本类型或者值类型 因为存储是值本身
    • 系统自动分配释放存放函数的值,局部变量的值,被称为栈
    • 复杂类型又叫引用类型 因为存储的是地址 调用的时候需要专门引用
    • 现在栈里面存放16进制地址码,然后指向堆里面的数据(对象实例),被称为堆复杂类型传参,如果不是传值,传的指针,也就是传地址
    • 特殊: Null返回的是一个空的对象(因为程序的设计缺陷)
    • 可以定义变量为Null,稍后再给值

    更多编程相关知识,请访问:编程入门!!

    以上就是Java Script中值得收藏的学习笔记(总结分享)的详细内容,更多请关注脚本宝典其它相关文章

    脚本宝典总结

    以上是脚本宝典为你收集整理的Java Script中值得收藏的学习笔记(总结分享)全部内容,希望文章能够帮你解决Java Script中值得收藏的学习笔记(总结分享)所遇到的问题。

    如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
    如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
    标签: