当前位置:   article > 正文

js学习笔记_js笔记

js笔记

目录

一、js简介

1.js的组成

2.js的书写位置

3.js 的输出语句

二、变量

1.变量是什么?变量的本质是什么?

2.变量命名规范

3.变量的数据类型

4.数据类型转换

三、运算符

1.递增++ 和 递减-- 运算符

2.比较运算符

3.逻辑运算符(返回值是true 或 false)

4.逻辑中断(短路运算)

5.赋值运算符

6.运算符优先级

四、循环语句

1.分支流程控制语句

2. 三元表达式

3.for循环

4.断点调试

5.双重 for循环

6.while循环

7.do while循环

8.continue 和 break

五、数组

1.数组(Array)

2.冒泡排序 ★

六、函数

1.函数

2.形参 和 实参

3.函数返回值 return

4.区别:continue、break、return

5.arguments的使用:

6.作用域

7.关于块级作用域 {}

8.作用域链

七、对象

1.对象

2.对象的创建方式

3.构造函数

4.new 关键字执行过程

5.遍历对象 for in

6. 内置对象

八、学会查阅文档

1. 日期格式化

2. 添加 / 删除数组元素

3. 检测是否为数组

4. 数组排序

5. 根据数组元素 返回索引号 

6. 拼接/ 截取 / 删除 数组

7. 数组转换为字符串

8. 根据位置返回字符 (重点)

9. 根据字符返回位置

10. 拼接 / 截取 / 替换 字符串(重点)

11. 转换大小写 

12.取绝对值

九、其他

1.基本包装类型

2.字符串的不可变性

3.数据类型(简单、复杂)

4.关于栈和堆

5.数据类型传参


一、js简介

1.js的组成

定义:js由 ECMAScript(JavaScript语法)、Dom(页面文档对象模型)、Bom(浏览器对象模型)三部分组成。

Dom:是一种标准的编程接口,通过Dom提供的接口可以对页面上的各种元素进行操作(大小、位置、颜色等)。

Bom:可以与浏览器窗口进行互动的对象结构,eg:弹出框、控制浏览器跳转、获取分辨率等。

Dom与Bom又属于Web APIs

2.js的书写位置

  • 行内式js  直接写到元素的内部 (js 中推荐单引号)
<input type="button" value="点我" onclick="alert('你好')" />
  • 内嵌式js 
  1. <script>
  2. alert('刘亦菲yyds');
  3. </script>
  • 外部js (需要引入)
<script src="my.js"></script>

3.js 的输出语句

  • alert ( )弹出警示框
  • console.log ( ) 控制台打印输入信息
  • prompt ( ) 弹出输入框,用户可以输入信息
  • prompt ( )取过来的值 是字符型的

二、变量

1.变量是什么?变量的本质是什么?

  • 白话讲,变量就是一个容器,用来存放数据的,方便我们以后使用里边的数据
  • 变量的本质就是内存里的一块空间,用来存储数据的

2.变量命名规范

  • 由字母、数字、下划线、$符号组成
  • 严格区分大小写
  • 不能以数字开头
  • 不能是关键字、保留字
  • 变量名最好有意义 eg:age、sex
  • 遵守驼峰命名法(首字母小写,后面字母需要大写) eg:myFirstName
  • 推荐的翻译网站:爱词霸、有道

3.变量的数据类型

  • Number(整型、浮点型)
  • Boolean(true、false 等价于1 和 0)
  • String(字符串型 带引号)
  • Undefined(声明未赋值 会出现Undefined)
  • Null (声明变量为空值)
  • js中变量的数据类型 是根据 = 右边变量值的数据类型来判断的
  • 记住一句话 在js里 等号就是 把右边给左边!!!

    数字型进制:常见二进制、八进制、十进制、十六进制

     八进制(0~7):以0开头  逢八进一

     eg:010(八进制转为十进制)

     计算方法:0*8^2+1*8^1+0*8^0 = 0+8+0=8

     十六进制(0~9 和 A~F):以0x开头

    数字型三个特殊值

      Infinity 无穷大

     -Infinity 无穷小

      NaN 代表一个非数值 

  •  isNaN( ) 用来判断一个变量是否为非数字的类型,返回true或false (非数字true 否则false)

     字符串型String

     转义符要包含在 引号 里边

转义符解释说明
\n换行符,n是newline的意思
\ \斜杠 \
\'' 单引号
\"" 双引号
\ttab 缩进
\b空格,b是blank的意思

  • 获取字符串长度
  1. var str = 'my name is andy';
  2. console.log(str.length); //长度为 15
  • 字符串的拼接(只要有字符串和 其他类型拼接 最终的结果都是字符串型
  • + 总结口诀 数值相加 字符相连
  • 记住:引引加加 (变量和字符串 相连接的口诀)删掉数字
  1. console.log('白雪' + 18); // '白雪18'
  2. console.log('12' + 12); // '1212'
  3. console.log(12 + 12); // 24
  4. console.log('我今年' + age + '岁了'); //引引加加 ' '+age+' '

   布尔型Boolean

  • true 和 false 两个值
  • true值为1 false值为0

4.数据类型转换

  • 转换为字符串型
方式说明案例
toString( )转化成字符串

var num = 1;

alert( num.toString() );

String( )转化成字符串

var num = 1;

alert( String(num) );

+号 拼接字符串

(隐式转换)

和字符串拼接的结果都是字符串

var num = 1;

alert( num + ' 苹果');

  • 转换为数字型(重点)
方式说明案例
parseInt( )  转换成整数数值型parseInt('100')
parseFloat()转换成浮点数值型parseFloat('12.31')
Number()转换为数值型Number('12')
js隐式转换(- * /)利用算数运算隐式转换为数值型'12' - 0

转换为布尔型Boolean

  • 代表空、否定的会被转换为false  例如:0、NaN、null、undefined
  • 其余值都会被转换为true
方式说明案例
Boolean()函数其他类型转换成布尔值Boolean('白雪')

三、运算符

1.递增++ 和 递减-- 运算符

  • 注意:递增和递减运算符 必须 和变量 配合使用
  • 单独使用时 运行结果相同
  • ++a 前置递增 先自加 后返回值(先己后人)
  • a++ 后置递增 先返回原值 后自加1  (先表达式返回原值参与运算 之后变量本身再自加1

2.比较运算符

  • 我们程序里边的 等于符号 是      ==     默认转换数据类型 会把字符串型的数据转换数字型 只要求值相等就可以
console.log('18' == 18 ); //true  
符号作用用法
=赋值把右边给左边
==判断判断两边值是否相等(注意此时有隐式转换)
===全等值和数据类型 完全相等

3.逻辑运算符(返回值是true 或 false

  • 逻辑与&& 两侧都为true  结果才是true 
  • 逻辑或||   两侧都为false 结果才是false
  • 逻辑非 !true = false  ; !false = true
逻辑运算符说明案例

&&

"逻辑与" 简称""  andtrue && false
||"逻辑或" 简称""  ortrue || false
"逻辑非" 简称""  not!true

4.逻辑中断(短路运算)

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

逻辑与(表达式1 && 表达式2)

  • 表达式1 为真,返回表达式2
  • 表达式1 为假,返回表达式1

逻辑或(表达式1 || 表达式2)

  • 表达式1 为真,返回表达式1 
  • 表达式1 为假,返回表达式2

注意:除了空、否定的为假  例如:0、NaN、null、undefined ,其余值都为真

5.赋值运算符

赋值运算符说明案例
=直接赋值var age = '18'

+= 、-=

加、减一个数 后再赋值

age+=5;

相等于 age = age + 5

*=、/=、%=乘、除、取模 后再赋值

age*=5;

相等于 age = age * 5

6.运算符优先级

  • 一元运算符里边的 逻辑非优先级很高
  • 逻辑与 > 逻辑或 (优先级)
  • 判断是否能被整除 :取余为0
优先级运算符顺序
1小括号()
2一元运算符++ -- !
3算术运算符先* / % 后+ -
4关系运算符>   >=   <  <=
5相等运算符==    ! =    ===    ! == 
6逻辑运算符先&& 后||
7赋值运算符=
8逗号运算符,

四、循环语句

1.分支流程控制语句

  (1)if语句(多选一)

  1. // 执行思路:如果if里边条件表达式结果为真 则执行大括号里边的 执行语句
  2. // 如果if表达式 为假 则不执行大括号里边的语句 执行if语句后边的代码
  3. if (条件表达式) {
  4. 执行语句
  5. }

  (2) if else if语句(多选一的过程)

  1. <script>
  2. if (条件表达式1) {
  3. //语句1;
  4. } else if (条件表达式2) {
  5. //语句2;
  6. } else if (条件表达式3) {
  7. //语句3;
  8. } else {
  9. //最后的语句;
  10. }
  11. </script>

(3)switch分支语句(多选一)

 switch注意事项:

  • 我们开发里边 表达式经常写成变量
  • 表达式的值 和value的值 相匹配的时候 必须是全等 (值和数据类型完全一致)
  1. <script>
  2. // 1.语法结构:(switch转换、开关 case小例子、选项)
  3. // 2.执行思路:利用我们的表达式的值 和 case 后面的value值相匹配
  4. // 如果匹配上 就执行该case里边的语句
  5. // 如果都没有匹配上 则执行default里边的语句
  6. switch (表达式) {
  7. case value1: //注意:case 值后边 这里是冒号:
  8. 执行语句1;
  9. break;
  10. case value2:
  11. 执行语句2;
  12. break;
  13. case value3:
  14. 执行语句3;
  15. break;
  16. ...
  17. default:
  18. 执行最后的语句;
  19. }
  20. </script>

switch...case语句和if...else...语句区别:

  •  一般情况下 它俩可以互相替换
  • switch语句通常处理case为比较确定值的情况 if else if更加灵活 常用于判断范围(> = 某范围)
  • switch语句进行判断后 直接执行到语句 效率更高 而 if else if 语句有几种条件 就得判断多少次
  • 分支比较少时,if else if 执行效率比switch高
  • 分支比较多时,switch语句执行效率比较高 而且结果更清晰

2. 三元表达式

  • 语法   条件表达式 ? 表达式1 : 表达式2

  • 如果条件表达式 值为真 则返回 表达式1 的值

  • 如果条件表达式 值为假 则返回 表达式2 的值

3.for循环

  • 重复执行某些代码 通常跟计数有关
  • for循环是 循环条件 和 数字 直接相关的循环
  1. // 1.初始化变量:就是用var 声明的一个普通变量 通常用于 作为计数器使用
  2. // 2.条件表达式:用来决定 每一次循环是否执行 就是终止的条件
  3. // 3.操作表达式:每次循环最后执行的代码 经常用于我们计数器变量进行更新(递增或递减)
  4. //语法:
  5. for (初始化变量; 条件表达式; 操作表达式) {
  6. 循环体
  7. }
  8. //打印100句 你好
  9. for (var i = 1; i <= 100; i++) {
  10. console.log('你好');
  11. }

4.断点调试

  • F12   sources  找到需要调试的文件  在某一行设置断点
  • 自己在程序某一行打个断点,这样程序运行到这一行就会停住
  • 可以一步步调试 ,观察程序的执行过程
  • 记得刷新网页
  • Watch监视:可以选择监视变量值的变化  (非常常用)
  • F11:程序单步执行,让程序一行一行的执行,观察watch中变量值的变化

小Tips:让打印结果 完全显示出来

  1. var str = ''; //追加字符串
  2. var num = 1;
  3. while (num <= 100) {
  4. str = str + '第' + num + '句你好' + '\n' //就能显示出来啦!
  5. num++;
  6. }
  7. console.log(str);
  8. // 2.这样写的话,显示不出来全部(只会有个"100"的提示)
  9. var num = 1;
  10. while (num <= 100) {
  11. console.log('你好呀!');
  12. num++;
  13. }

5.双重 for循环

   定义:在 for循环 里边再嵌套一个 for循环

   实现:可以打印 五行五列的星星、一个倒直角三角形等

   注意点:

  • 外层循环1次,内层循环执行全部
  • 外层循环控制 行数,内层循环控制 列数(每行的个数)

6.while循环

  1. // 1.语法结构:while 当 ... 的时候
  2. while (条件表达式) {
  3. 循环体
  4. }
  5. // 2.执行思路:当条件表达式结果为 true 则执行循环体 否则 退出循环,执行后边的代码
  6. var num = 1; // 计数器 初始化变量
  7. while (num <= 100) {
  8. console.log('你好呀!');
  9. num++; // 完成计数器的更新 防止死循环
  10. }

7.do while循环

  1. // 1.do while 语法:
  2. do {
  3. 循环体
  4. } while (条件表达式)
  5. // 2.执行思路:先执行一次循环体 再判断条件 如果条件表达式为真,则继续执行循环体,否则退出循环
  6. // 3.打印100句 我喜欢你
  7. var i = 1;
  8. do {
  9. console.log('我喜欢你');
  10. i++;
  11. } while (i <= 100)

while 和 do while 的区别

  • while先判断 再执行循环体
  • do while 先执行循环体 再判断(循环体至少执行一次)

8.continue 和 break

  • continue 关键字:退出本次循环,继续执行剩余次数的循环
  • break 关键字:退出整个循环

五、数组

1.数组(Array)

定义:就是一组数据的集合,存储在单个变量下(数组里边的数据 成为数据元素)

(1)创建数组

  • 利用new 创建数组 
var arr = new Array();    //创建了一个 空数组
  • 利用数组字面量创建数组
 var arr1 = [];   //创建了一个 空数组

注意点:

  • 获取数组元素 数组名[索引号] 索引号从0开始
  • 数组里边可以存放 任意类型的数据(字符串、数字、布尔值等)

(2)遍历数组

定义:就是把数组的元素从头到尾访问一次

注意点:

  • 遍历是通过 for循环 进行的 (想把数组里边的值取出来 就通过遍历 for循环)
  • 索引号 i 从0开始  ; i 的范围 不带等号
  • arr [ i ]是 数组元素第 i 个  ;   i  是计数器(当索引号使用)
  1. var arr = ['red', 'green', 'blue'];
  2. for (i = 0; i < 3; i++) {
  3. console.log(arr[i]); // 'red', 'green', 'blue' 必须是arr[i]
  4. }
  5. // 注意点:★
  6. // 1.i 从0开始 所以 i < 3 (不能含等号)
  7. // 2.只能输出打印arr[i] 而不能是i
  8. // 3.arr[i]是 数组元素第i个 i是计数器(当索引号使用)

(3)数组长度:数组名.length

  • 数组长度是元素个数 不要跟索引号i混淆
  • arr.length 动态监测数组元素的个数(方便添加数组元素 )
  1. var arr = ['red', 'green', 'blue'];
  2. for (i = 0; i < arr.length; i++) {
  3. console.log(arr[i]);
  4. }

(4)新增数组元素

  • 修改 arr.length 的长度

  • 修改索引号 追加数组元素(也可以替换 数组元素)

2.冒泡排序 ★

定义:一次比较两个元素,如果它们的顺序错误就把它们交换过来(从大到小or从小到大的顺序)

  1. var arr = [4, 1, 2, 3, 5]; //从大到小排序
  2. for (var i = 0; i <= arr.length - 1; i++) { //外层循环 管轮数
  3. for (var j = 0; j <= arr.length - i - 1; j++) { //内层循环 管每一轮的交换次数
  4. // 内部交换2个变量 前一个和后一个数组元素相比较
  5. if (arr[j] < arr[j + 1]) {
  6. var temp = arr[j];
  7. arr[j] = arr[j + 1];
  8. arr[j + 1] = temp;
  9. }
  10. }
  11. }
  12. console.log(arr);
  13. // 由于每一轮循环都会确定一个当前轮数下的最大元素,因此在下一轮循环中可以减少遍历的元素个数
  14. // arr.length - i - 1 表示未排序部分的长度
  15. // -i目的:忽略已经排好的末尾部分,减少内层循环的遍历次数 (i是轮数 )

六、函数

1.函数

定义:函数就是封装了一段可以被重复调用执行的代码块 目的:实现大量代码的重复使用

命名:函数命名一般用 动词 get Sum 等,变量命名一般用 名词 sum等

算法:观察变化 找出规律 转换为代码

函数的封装:把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口

简单理解:封装 就是将电脑配件整合组装到机箱中 (类似快递打包)

函数的使用:

  • 声明函数 和 调用函数 
  • 声明函数 有两种方式   1.利用函数关键字 自命名函数  2. 使用函数表达式 声明函数 (匿名函数)
  • 函数不调用 自己不执行
  1. // 函数的使用:声明函数 和 调用函数
  2. // 1.声明函数 两种方式:(1)利用函数关键字自命名函数 (2) 使用函数表达式声明函数 (匿名函数)
  3. function 函数名(){
  4. 函数体
  5. }
  6. function sayHi() {
  7. console.log('hi~~');
  8. }
  9. // 2.调用函数 函数名();
  10. sayHi();
  11. // (2) 函数表达式(匿名函数)★
  12. // var 变量名 = function(){
  13. // 函数体
  14. // }
  15. var fun = function (aru) {
  16. console.log('我是函数表达式');
  17. console.log(aru);
  18. }
  19. fun('我传递参数给aru');

2.形参 和 实参

  •  形参:声明函数时 小括号里边的为形参(形式上的参数)
  •  实参:函数调用时,小括号里边的是实参(实际的参数)

注意点:

  •  形参是用来接收实参的
  •  形参可以看做是不用声明的变量
  •  尽量让实参和形参 个数相匹配

  •  函数可以带参数 也可以不带参数 (带参数的话,参数个数不限)

  • 在js中,形参默认值是:undefined

参数作用:函数内部某些值不固定,我们可以通过参数在调用函数时传递不同的值进去

  1. // function 函数名(形参1,形参2...){
  2. // }
  3. // 函数名(实参1,实参2...)
  4. // 形参和实参 的执行过程 arguments 参数
  5. function cook(aru) { // 类似于赋值操作 aru = '辣子鸡'
  6. console.log(aru);
  7. }
  8. cook('红烧排骨');
  9. cook('辣子鸡');

3.函数返回值 return

  • 函数只是实现某种功能,最终的结果是需要返回给函数的调用者--函数名() ,这就需要通过return实现
  • 只要函数遇到return,就把return后边的结果 返回给了函数的调用者 相当于进行了一次赋值操作,函数名( ) = return后面结果
  • return 只能返回一个值 如果用逗号隔开多个值 以最后一个为准
  1. // 代码比较:
  2. // 1. 把实参传给 形参 然后打印出来
  3. function cook1(aru) {
  4. console.log(aru);
  5. }
  6. cook1('卤猪蹄')
  7. // 2. 把实参传给 形参 再把return后面的值 返回给调用者cook(); 然后打印出来
  8. function cook(aru) {
  9. return aru;
  10. }
  11. console.log(cook('大肘子'));

4.区别:continue、break、return

  • continue:退出本次循环,继续执行剩余次数的循环
  • break:退出整个循环
  • return:退出循环,返回return语句中的值,结束当前的函数体里边的代码

5.arguments的使用:

  • 当我们不确定有多少个参数的时候,可以用arguments来获取
  • 每个函数都内置的有arguments对象

  • arguments中 存储了传递的所有实参

  • arguments的展示形式 是一个 伪数组,因此可以进行遍历

伪数组特点:

  • 具有数组的 length 属性
  • 按照 索引 的方式进行存储
  • 它没有真正数组的一些方法  pop() 、push() 等方法

6.作用域

作用域:就是代码名字(变量) 在某个范围内 起作用和效果 目的:提高程序可靠性 减少命名冲突

  • 全局作用域:整个script标签 或者是 一个单独的js文件 内起作用
  • 局部作用域:又叫做函数作用域,在函数内部的就是局部作用域 这个代码的名字只在函数内部起效果和作用

变量的作用域

全局变量:在全局作用域下的变量 全局下都可以使用

  • 如果在函数内部 没有声明直接赋值的变量也属于 全局变量 ★

局部变量:在局部作用域下的变量 或者 在函数内部的变量就是 局部变量

  • 函数的形参也可以看做是局部变量

7.关于块级作用域 {}

现阶段我们的js中 没有块级作用域

  • js没有块级作用域 我们在花括号写的变量 也可以被外部调用 ★
  • 不要和局部作用域(函数作用域) 弄混淆了 
  1. // 块级作用域 {}
  2. // 在java中
  3. // if (xx) {
  4. // int num = 10;
  5. // }
  6. // 外面 是不能调用num的
  7. //注意:
  8. // js没有块级作用域 我们在花括号写的变量 也可以被外部调用 ★
  9. // 不要和局部作用域 弄混淆了 ★
  10. if (3 < 5) {
  11. var num = 10;
  12. }
  13. console.log(num); // 10

8.作用域链

 作用域链:内部函数访问外部函数的变量 采取的 链式查找的方式 目的:用于决定取哪个值

  • 采用 就近原则 ★
  • 站在目标出发,一层一层向外查找 

七、对象

1.对象

定义:在js中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等

通俗理解: 对象是一个具体的事物,看的见摸得着的实体

组成:对象是由 属性 和 方法 组成的

  • 属性:事物的特征,在对象中用属性来表示(常用名词)
  • 方法:事物的行为,在对象中用方法来表示是(常用动词)
  • 方法冒号后面跟的是一个匿名函数
  • 方法的另一种解释:写在对象里面的函数 就叫做 方法

2.对象的创建方式

(1) 利用对象字面量 创建对象 { }

  • 采取 键值对 的形式 匹配属性   属性名(键) :属性值(值)
  • 多个属性或者方法中间用 逗号 隔开
  • 方法冒号后面跟的是一个匿名函数 ★
  • 调用的时候:对象名.属性名   对象名.方法名()
  1. // var obj = {}; // 创建了一个空的对象
  2. var obj = {
  3. uname: '白小雪',
  4. age: 18,
  5. sex: '男',
  6. sayHi: function () {
  7. console.log('hi~');
  8. }
  9. }
  10. console.log(obj.uname); // 对象名.属性名
  11. console.log(obj['age']); // 对象名['属性名']
  12. obj.sayHi(); // 对象名.方法名()

(2)利用 new Object 创建对象

  •  采用 等号赋值 的方法 添加对象的属性和方法
  • 多个属性和方法之间用 分号 结束
  1. var obj = new Object(); // 创建了一个空对象
  2. obj.uname = '上官雪儿';
  3. obj.age = 21;
  4. obj.sex = '女';
  5. obj.sayHi = function () {
  6. console.log('hi~');
  7. }
  8. console.log(obj.uname);
  9. console.log(obj['sex']);
  10. obj.sayHi();

(3)利用构造函数 创建对象 ★

  • 构造函数名字 首字母要大写
  • 构造函数 不需要 return 就可以返回结果
  • 多个属性和方法之间用 分号 结束
  • 调用构造函数 必须用 new
  • 我们只要new Star()一下 调用函数就创建一个对象 ldh{}
  • 属性 和 方法 前面必须添加 this ★  (this 当前这个)
  1. // 构造函数 语法格式:
  2. function 构造函数名(){
  3. this.属性 = 值;
  4. this.方法 = function(){
  5. }
  6. }
  7. new 构造函数名(); // 调用构造函数 必须用 new ★
  8. // 举例
  9. function Star(uname, age, sex) {
  10. this.name = uname;
  11. this.age = age;
  12. this.sex = sex;
  13. this.sing = function (sang) {
  14. console.log(sang);
  15. }
  16. }
  17. var ldh = new Star('刘德华', 18, '男'); // 调用函数 返回的是一个对象
  18. // console.log(typeof ldh); // object
  19. console.log(ldh.name);
  20. console.log(ldh['sex']);
  21. ldh.sing('冰雨'); // // 调用对象的方法 对象名.方法名()★
  22. var zxy = new Star('张学友', 21, '男');
  23. console.log(zxy.name);
  24. console.log(zxy.age);

3.构造函数

定义:抽取对象 相同的 属性和方法 封装到函数里面 (泛指某一大类)  eg:Star

  • 构造函数 里边封装的是 对象
  • 利用构造函数 可以生成很多对象
  • 创建对象:通过new关键字创建对象, 这个过程又叫做对象实例化 (特指某一个)  eg:某个明星

4.new 关键字执行过程

  • new 构造函数 可以在内存中创建一个 空对象
  • this 会指向刚刚创建的对象
  • 执行构造函数里面的代码 给这个空对象添加属性和方法 ★
  • 返回这个对象

5.遍历对象 for in

  • 遍历对象:利用 for in 遍历对象 (for in 里边的变量 我们习惯写成 k 或者 key)
  • 作用:for in 语句 用于对数组或者对象的属性进行循环操作
  1. // 语法:
  2. for(变量 in 对象){
  3. }
  4. // 举例
  5. var obj = {
  6. name: 'pink老师',
  7. age: 18,
  8. sex: '男'
  9. }
  10. for (var k in obj) {
  11. console.log(k); // k 变量 输出 得到的是 属性名
  12. console.log(obj[k]); // obj[k] 得到的是 属性值
  13. }

6. 内置对象

定义:js自带的一些对象,供开发者使用,提供了一些常用的功能(属性和方法)

优点:帮助我们快速开发

js常用内置对象:Math、Date、Array、String等

八、学会查阅文档

MDN:https://developer.mozilla.org/zh-CN/

W3C:w3school 在线教程

1. 日期格式化

方法名说明
getFullYear()获取当年
getMonth()

获取当月(0~11)

返回月份小一个月 记得月份 +1 操作!

getDate()获取当天日期
getDay()

获取星期几(周日0)

getHours()获取当前小时
getMinutes()获取当前分钟
getSeconds()获取当前秒

  1. var time = new Date()
  2. console.log(time.getFullYear());
  3. console.log(time.getMonth() + 1);
  4. console.log(time.getDate());
  5. console.log(time.getDay());
  6. console.log(time.getHours());
  7. console.log(time.getMinutes());
  8. console.log(time.getSeconds());

2. 添加 / 删除数组元素

方法名说明返回值
push(参数1,参数2...)末尾添加一个或多个元素并返回新的长度
pop()删除数组最后一个元素返回它删除的元素值
unshift(参数1,参数2...)开头添加一个或多个元素并返回新的长度
shift()删除数组第一个元素并返回他删除的元素值

3. 检测是否为数组

方法名说明

instanceof

arr instanceof Array

检测是否为数组

Array.isArray(参数)

Array.isArray(arr)

H5新增的 支持ie9以上版本

4. 数组排序

方法名说明
reverse()翻转数组中元素的顺序
sort对数组元素进行排序(参考冒泡排序效果)
  1. // 数组排序 (冒泡排序) 记住这种方法!
  2. var arr = [3, 2, 57, 68, 25, 99];
  3. arr.sort(function (a, b) {
  4. // return a - b; // 升序排序
  5. return b - a; // 降序排序
  6. });
  7. console.log(arr);

5. 根据数组元素 返回索引号 

方法名说明返回值
indexOf()从前往后找 只找第一个匹配的如果存在则返回索引号,不存在 返回 -1
indexOf('要查找的数组元素',开始的位置)从开始位置查找 只找第一个匹配的返回从指定位置开始查找 符合要求的数组元素 索引号,不存在 返回 -1
lastIndexOf()从后往前找 只找第一个匹配的如果存在则返回索引号,不存在 返回 -1

6. 拼接/ 截取 / 删除 数组

方法名说明
concat(arr1,arr2,arr3...)

concat()方法用于 连接两个或多个数组

slice(start,end)

从start位置开始,截取到end位置 end取不到  ;

slice 不会改变原始数组,要把截取后的数组 赋给一个新数组 ★

splice(start,length)

数组删除 splice(第几个开始,要删除个数) 

7. 数组转换为字符串

方法名说明返回值
toString()把数组转换为字符串返回一个字符串
join('分隔符')把数组中的所有元素转换为一个字符串返回一个字符串

8. 根据位置返回字符 (重点)

方法名说明使用
charAt(index)获取指定位置处字符 (index:字符串的索引号)str.charAt( )
charCodeAt(index)获取指定位置处字符的ASCII码str.charCodeAt(0)
str[index]获取指定位置处字符 (str是变量名)HTML5,IE8+ 支持

ASCII码值:

  • A 65
  • a 97

9. 根据字符返回位置

方法名说明返回值
indexOf('要查找的字符',开始的位置)从开始位置查找 只找第一个匹配的返回从指定位置开始查找 符合要求的字符串索引号,不存在 返回 -1

10. 拼接 / 截取 / 替换 字符串(重点)

方法名说明
concat(str1,str2,str3...)

concat()方法 用于连接两个或多个字符串

拼接字符串,等效于+ 号   +号更常用

substr(start,length)

从start位置开始(索引号) length截取的个数;

括号内只写一个 默认为:从开始位置 截取到最后

substring(start,end)从start位置开始,截取到end位置 end取不到 (不接受负值)
slice(start,end)从start位置开始,截取到end位置 end取不到

replace('字符','替换字符')

替换为空字符串  相当于删除

11. 转换大小写 

方法名说明
toUpperCase()转换大写
toLowerCase()转换小写

12.取绝对值

方法名说明
Math.abs( )取绝对值

九、其他

1.基本包装类型

定义:把简单数据类型 包装成为 复杂数据类型 这样简单数据类型就有了属性和方法

2.字符串的不可变性

定义:指原来的值还在 改变的只是它的地址 内存中开辟了一个新的内存空间用于存储它

字符串所有的方法,都不会修改字符串本身(字符串是不可变的)操作完成会返回一个新的字符串

3.数据类型(简单、复杂)

(1) 简单数据类型

定义:在存储时,变量中存储的是值本身,因此又叫做值类型 或者 基本数据类型

  • 存放在栈里面 里面直接开辟一个空间存放的是值

  • 简单数据类型 null 返回的是一个空的对象 object(如果有个变量 我们以后打算存储为对象 暂时没想好放什么 这个时候就给 null)

  • 举例:string number boolean undefined null

(2) 复杂数据类型

定义:在存储时,变量中存储的仅仅是地址(引用),因此又叫做引用数据类型

  • 首先在栈里面存放地址 十六进制表示 然后这个地址指向堆里面的数据

  • Object Array Date等 (通过new关键字创建的对象 包括系统对象 自定义对象)       

4.关于栈和堆

栈(操作系统):由操作系统自动分配释放存放函数的参数值、局部变量的值等 (存放简单数据类型)

堆(操作系统):一般由程序员分配释放 若程序员不释放 由垃圾回收机回收 (存储复杂数据类型-对象)

注意:js中没有堆栈的概念 我们采取通过堆栈的方式 让大家更容易理解代码的执行

5.数据类型传参

(1)简单数据类型传参

       函数的形参也可以看作是一个变量,当我们把一个值类型变量作为参数传给函数的形参时,其实是把变量在栈空间里的值复制了一份给形参,那么在方法内部对形参做任何修改,都不会影响到外部变量

(2)复杂数据类型传参

       函数的形参也可以看作是一个变量,当我们把引用类型变量传给形参时,其实是把变量在栈空间里保存的堆地址复制给了形参,形参和实参其实保存的是同一个堆地址,所以操作的是同一个对象

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/251396
推荐阅读
相关标签
  

闽ICP备14008679号