他的回复:
# 第二周笔记:数组和函数入门 ## 新增数组元素的方法 ### 通过修改length数值来增加数组元素 例: ``` var arr = [1, 2, 3]; arr.length = 5; console.log(arr);//(5)[1, 2, 3, empty × 2] ``` ### 通过修改索引号追加数组元素 例: ``` var arr = [4, 5, 6]; arr[3] = 7; console.log(arr);//(4)[4, 5, 6, 7] ``` ***注意:不要给数组名进行赋值操作,这会导致变量的数据类型改变,使数组元素丢失*** ### 冒泡排序 ``` var arr = [5, 4, 3, 2, 1]; for (i = 1; i arr.length; i++) { for (j = 0; j arr.length - i; j++) { if (arr[j] > arr[j + 1]) { var temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; }; }; } console.log(arr); ``` ### 函数 函数使用分为两步:声明函数和调用函数 1. 声明函数: > function 函数名() { > 函数体 >} ``` function sayHi() { console.log('hi~~'); } ``` **注意事项** + function声明函数的关键字全部小写 + 函数是做某件事情,函数名一般使用动词,例如:sayHi + 函数未被调用的时候,自己不会执行 2. 调用函数 > 函数名(); ``` sayHi(); ``` **注意事项** + 通过调用函数名来执行函数体代码 + 调用的时候千万**不要忘记加小括号** ### 利用函数计算1-100之间的累加和 ``` function getSum(num1, num2) { var sum = 0; for (var i = num1; i = num2; i++){ sum += i; } console.log(sum); } getSum(1, 100) //5050 ``` ### js函数参数和python函数参数的区别 1. python调用函数的参数必须和形参数量相同,否则将报错(带有可变参数的情况除外) 2. js实参和形参的数量可以不同 |js参数个数|js说明| |---|---| |实参个数大于形参个数|只取到形参个数,多出来的实参被抛弃| |实参个数等于形参个数|正常运行| |实参个数小于形参个数|多出来的形参值为undefined| ### 函数的返回值 1. return返回一个结果 + return只能返回一个结果,当尝试返回多个结果时,return会返回最后一个结果 + return会中断函数执行后续的代码片段 2. 函数没有return语句时返回为undefined ### null和undefined的区别 做练习时发现一个题目中同时出现了null和undefined,为探索两者的不同特意去搜索了一下,结果如下: > undefined:表示一个变量最原始的状态,而非人为操作的结果 > null:表示一个对象被人为的重置为空对象,而非一个变量最原始的状态 #### undefined > 字面意思就是未定义的值,这个值的语义是,希望表示一个变量最原始的状态,而非人为操作的结果。这种原始状态会在以下 4 种场景中出现: 1. 声明了一个变量,但没有赋值 ``` 1 var foo; 2 console.log(foo); //undefined ``` >> 访问foo,返回了undefined,表示这个变量自从声明了以后,就从来没有使用过,也没有定义过任何有效的值,即处于一种原始而不可用的状态 2. 访问对象上不存在的属性 ``` 1 console.log(Object.foo); // undefined ``` >> 访问Object对象上的 foo 属性,同样也返回 undefined , 表示Object 上不存在或者没有定义名为 “foo” 的属性 3. 函数定义了形参,但没有传递实参 ``` 1 //函数定义了形参 a 2 function fn(a) { 3 console.log(a); //undefined 4 } 5 fn(); //未传递实参 ``` >> 函数 fn 定义了形参a, 但 fn 被调用时没有传递参数,因此,fn 运行时的参数 a 就是一个原始的、未被赋值的变量 4. 使用 void 对表达式求值 ``` 1 void 0 ; // undefined 2 void false; //undefined 3 void []; //undefined 4 void null; //undefined 5 void function fn(){} ; //undefined ``` >> ECMAScript 规范 void 操作符 对任何表达式求值都返回 undefined ,这个和函数执行操作后没有返回值的作用是一样的,JavaScript中的函数都有返回值,当没有 return 操作时,就默认返回一个原始的状态值,这个值就是undefined,表明函数的返回值未被定义。 *因此,undefined 一般都来自于某个表达式最原始的状态值,不是人为操作的结果。当然,你也可以手动给一个变量赋值 undefined,但这样做没有意义,因为一个变量不赋值就是 undefined* #### null > null 的字面意思是 空值 ,这个值的语义是,希望表示 一个对象被人为的重置为空对象,而非一个变量最原始的状态 。 在内存里的表示就是,栈中的变量没有指向堆中的内存对象,即: >> null 有属于自己的类型 Null,而不属于Object类型,typeof 之所以会判定为 Object 类型,是因为***JavaScript 数据类型在底层都是以二进制的形式表示的,二进制的前三位为 0 会被 typeof 判断为对象类型,而 null 的二进制位恰好都是 0 ,因此,null 被误判断为 Object 类型***