1.控制台出现"undefined"报错
"undefined"是一个Javascript的错误报错,表示变量或属性未定义或未赋值。
这个报错通常出现在以下情况下:
- 尝试访问未声明的变量或函数。
- 尝试访问未定义的对象属性。
- 尝试调用未定义的函数。
- 变量或属性被声明但没有赋值。
出现这个报错的原因可能是:
- 代码中存在拼写错误,导致变量或函数无法被正确识别。
- 变量或属性在代码执行之前没有被声明或赋值。
- 在异步操作中,代码尝试访问尚未完成的异步操作的结果。
为了解决这个问题,可以检查以下几点:
- 确保变量或函数的拼写正确,并且已经正确声明。
- 确保变量或属性在使用前已经赋值。
- 对于异步操作,可以使用回调函数、Promise或Async/Await来处理异步结果。
- 尽量使用严格模式,避免隐式的全局变量。
2.匿名函数分为两种,一种是函数表达式,一种是自执行函数。
需要注意:函数表达式只能在后面进行调用,可以多次调用,但自执行函数只能调用一次
3.注意以下自执行函数的理解
var c= (function () {var x = 10;var y = 5;return function(){return x+y;}})()();console.log(c);
第一个return返回的结果是一个函数,此时用变量直接接的话接到的是一个函数,因此在结尾处再加一个括号,进行二次调用,得到的结果才是x+y的运算数值,然后我们用变量c将函数的返回值给接回来,再输出C就能得到预期结果。
function(){ return x+y; }
4.把伪数组转换为真数组的方法总结
<script>function fn() {// 把伪数组转换为真数组// 方法一:遍历var arr = [];for (var i = 0; i < arguments.length; i++) {arr[arr.length] = arguments[i];}console.log(arr);// 方法二var arr1 = [...arguments]console.log(arr1);// 方法三var arr2=Array.from(arguments);console.log(arr2);// 方法四:var arr3=Array.prototype.slice.call(arguments);console.log(arr3);}fn(1, 23, 45, 76, 2)</script>
4.以下表达式的运行结果是:1+-1++-+1什么?
会报错,因为只有变量才可以自增和自减。
console.log(1+-1++-+1);// Uncaught SyntaxError: Invalid left-hand side expression in postfix operation