JavaScript基础细节

mac2024-03-12  27

部分与编译型语言有区别的语法

数据类型

NaN:表示不是数字 undefined:未初始化

表达式: ==:不严格的判等 “10” == 10 true ===:严格的判等 “10”===10 false !== !===

分支结构

switch 语句中 用的是严格的判等


数组

声明方式:

var array = new Array(); // 空数组 var array = new Array(10); // 内容为undefined var array = new array(10,20,30); //number数组 var array = []; //空数组 var array = [10,20,30]; //number数组

数组长度可以改变

var array = []; //声明一个空数组 var array[0] = 10; //往里面添加元素 var array[1] = 20; console.log(array.length) //数组长度改变

函数

定义 //声明 function fun(){ } //参数不需要声明类型(没法声明类型) function fun(x,y){ } //如果没有返回值或return; 则会得到一个undefined console.log(fun(1,2)); arguments对象 arguments就是参数列表的数组(伪数组) function fun(){ //此操作可以显示传入的参数长度,即使函数参数列表没有声明。 console.log(arguments.length); console.log(arguments);//打印参数列表的值 } fun(1,2,3); 命名函数与匿名函数 var fun = function () { } 这种方式叫函数表达式

普通同名函数,后定义的函数会覆盖前面的函数,而函数表达式和变量赋值类似。 4. 函数自调用

(function () { console.log("aaaa") })(); 函数作为参数使用: function f1(f2) { f2(); console.log("bbbb"); } function f2() { console.log("aaaa"); } f1(f2); 函数作为返回值使用 function f1() { return function () { console.log("aaaa"); } } var ff = f1(); ff();

总结: 函数名的本质就是函数体。 函数的数据类型是function。


JS中的作用域

两个script标签可以使用一个变量 ** js里没有块级作用域 只有函数中声明的吧变量是局部变量,其他任何位置声明的变量都是全局变量。 <script> var num = 1; </script> <script> alert(num); //1 </script> 隐式全局变量 function f() { num = 10; //不用var声明. delete num; } //可以访问到函数内的变量,因此此函数不会被释放内存 console.log(num); //delete 关键字可以删除隐式全局变量 delete num; //但无法删除var声明的变量

JS中的预解析

js代码会预先声明变量,只要变量被声明,无论变量在什么位置,解释器会提前声明, 函数会调整顺序,无论函数体在什么位置,只要有这个函数,就能被整确调用。

注意

var num = 1; function f1() { //隐式的var num; console.log(num); //此结果仍然是undefined 因为js会预解析 var num = 20; } f1();
f1(); var num = 1; //函数会被提前,这个变量的声明也会提升到变量使用之前 function f1() { console.log(num); //此结果仍然是undefined }
function f1() { console.log(num); //此结果仍然是undefined var num = 1; } f1(); console.log(num); //报错、提升只会在作用域里面进行
//多个标签预解析不冲突(各标签各玩各的) <script> f1(); //aaaa function f() { console.log("aaaa"); } </script> <script> f1(); //bbbb function f() { console.log("bbbb"); } </script>
console.log(a); // a的函数体 function a() { console.log("123"); } var a = 10; console.log(a); //10; //提升时,总是变量在前,函数在后进行提升 ```
最新回复(0)