参见英文答案 >
Why doesn’t a Javascript return statement work when the return value is on a new line?3
如果我在以下代码片段中执行测试函数:
如果我在以下代码片段中执行测试函数:
function pointInside( r,p ) { var result = ( p.x >= r.location.x - r.size.width * 0.5 ) && ( p.x <= r.location.x + r.size.width * 0.5 ) && ( p.y >= r.location.y - r.size.height * 0.5 ) && ( p.y <= r.location.y + r.size.height * 0.5 ) ; return result; } function test() { var rect = {}; rect["location"] = { x:6,y:5 }; rect["size"] = { width:10,height:8 }; var p = { x:10,y:8 }; var inside = pointInside( rect,p ); console.log( inside ? "inside" : "outside" ); }
那么文本“inside”将被写入控制台.大.现在,如果我将pointInside函数更改为:
function pointInside( r,p ) { return ( p.x >= r.location.x - r.size.width * 0.5 ) && ( p.x <= r.location.x + r.size.width * 0.5 ) && ( p.y >= r.location.y - r.size.height * 0.5 ) && ( p.y <= r.location.y + r.size.height * 0.5 ) ; }
那么当我调用测试函数“outside”时就会写入控制台.进一步调查我发现pointInside函数实际上返回未定义.为什么?在PointInside的两个版本之间看不出任何有意义的区别.有人可以向我解释一下吗
解决方法
不幸的是,很多JavaScript解释器试图对缺少分号进行宽恕.如果你有“返回”,然后是行尾,许多口译员会假设你已经忘记了一个分号.因此你的“未定义”.