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>
5. 以下表达式的运行结果是:1+-1++-+1什么?
会报错,因为只有变量才可以自增和自减。
console.log(1+-1++-+1); // Uncaught SyntaxError: Invalid left-hand side expression in postfix operation