Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;丢失的“在声明之前”;用很长的代码_Javascript_Date_Math_Lambda - Fatal编程技术网

Javascript &引用;丢失的“在声明之前”;用很长的代码

Javascript &引用;丢失的“在声明之前”;用很长的代码,javascript,date,math,lambda,Javascript,Date,Math,Lambda,我有一个长代码的问题,下面是代码: navigator.geolocation.getCurrentPosition(function(position) { var long = position.coords.longitude; var lat = position.coords.latitude; var theDateC = new Date(); var D = (367 * theDateC.getFullYear()) - (parseInt((7

我有一个长代码的问题,下面是代码:

navigator.geolocation.getCurrentPosition(function(position) {
    var long = position.coords.longitude;
    var lat = position.coords.latitude;
    var theDateC = new Date();
    var D = (367 * theDateC.getFullYear()) - (parseInt((7 / 4)(theDateC.getFullYear + parseInt((theDateC.getMonth() + 9) / 12)))) + parseInt(275(theDateC.getMonth() / 9)) + theDateC.getDate() - 730531.5);
var L = 280.461 + 0.9856474 * D;
var M = 357.528 + 0.9856003 * D;
var Lambda = L + 1.915 * Math.sin(M) + 0.02 * Math.sin(2 * M);
var Obliquity = 23.439 - 0.0000004 * D;
var Alpha = Math.atan(Math.cos(Obliquity) * Math.tan(Lambda)); Alpha = Alpha - (360 * parseInt(Alpha / 360); Alpha = Alpha + 90 * (Math.trunc(Alpha / 90) - Math.trunc(Alpha / 90));
    var ST = 100.46 + 0.985647352 * D;
    var Dec = Math.asin(Math.sin(Obliquity) * Math.sin(Lambda));
    var Noon = Alpha - ST;
    var UTNoon = Noon - long;
    if (Date().substring(Date().length - 3, Date().length) === "GMT"
    } {
        var Zone = 0;
    } else {
        var Zone = Number(Date().substring(Date().length - 4, Date().length - 2)) + Number(Number(Date().substring(Date().length - 2, Date().length) * 60))) / 60;
};
var LocalNoon = UTNoon / 15 + Zone;
var AsrAlt = Math.atan(1 + Math.tan(lat - Dec));
var AsrArc = Math.acos((Math.sin(90 - AsrAlt) - Math.sin(Dec) * Math.sin(Lat)) / (Math.cos(Dec) * Math.cos(Lat))); AsrArc = AsrArc / 15;
var AsrTime = LocalNoon + AsrArc; alert("وقت العصر : " + AsrTime);
});

我知道代码非常长,它用于计算访客经纬度(伊斯兰祈祷)中的Asr祈祷时间,当我执行代码时,它显示:“Missing;before statement”

我已经更新了函数。。。现在检查

navigator.geolocation.getCurrentPosition(function(position){
    var long = position.coords.longitude; 
    var lat = position.coords.latitude; 
    var theDateC = new Date(); 
    var D = (367*theDateC.getFullYear())-(parseInt((7/4)*(theDateC.getFullYear+parseInt((theDateC.getMonth()+9)/12))))+parseInt(275*(theDateC.getMonth()/9))+theDateC.getDate()-730531.5; 
    var L = 280.461+0.9856474*D; 
    var M = 357.528+0.9856003*D; 
    var Lambda = L +1.915*Math.sin(M)+0.02*Math.sin(2*M); 
    var Obliquity = 23.439-0.0000004*D; 
    var Alpha = Math.atan (Math.cos(Obliquity)*Math.tan(Lambda)); 
    Alpha = Alpha - (360 * parseInt(Alpha/360)); 
    Alpha = Alpha + 90 * ( Math.trunc ( Alpha / 90 ) - Math.trunc(Alpha / 90)); 
    var ST = 100.46 + 0.985647352 *D; 
    var Dec = Math.asin(Math.sin (Obliquity )*Math.sin(Lambda)); 
    var Noon = Alpha - ST; 
    var UTNoon = Noon - long; 
    if (Date().substring(Date().length - 3, Date().length) === "GMT") {
        var Zone = 0;
    } else {
        var Zone = Number(Date().substring(Date().length - 4, Date().length - 2)) + Number(Number(Date().substring(Date().length - 2, Date().length) * 60)) / 60; 
    } 
    var LocalNoon = UTNoon / 15 + Zone; var AsrAlt = Math.atan (1+ Math.tan( lat - Dec)); 
    var AsrArc = Math.acos ((Math.sin(90- AsrAlt )-Math.sin(Dec)*Math.sin(lat))/(Math.cos(Dec)*Math.cos(lat))); AsrArc = AsrArc / 15; 
    var AsrTime = LocalNoon + AsrArc; alert("وقت العصر : " + AsrTime); 
});

特别感谢js_noob对我的帮助,他的功能非常好! 但我仍然对函数有问题,下面是完整编辑的工作代码:


该函数现在正在运行,但问题最终还是存在的。 当警报响起时,它会说:
“南:南”

根据我在javascript中的知识,这意味着最后一个变量不是数字,但是当我检查函数时,我发现没有使用字符串

请编辑您的问题以格式化您的代码。与其链接大量难以调试的调用,不如将其拆分为多个变量赋值并合并结果。如果您格式化您的代码,我们将更易于阅读,以便提供帮助,但您也可以找到您的问题。拆分语句,使每一个语句在新行开始就是一个开始。如果你有很长的一行,那就用更多的局部变量把它们分开。然后,您应该能够更容易地检查每个语句的语法,以发现问题。第一行if缺少parens。(我在代码格式化后很快看到了这一点。)在编写代码之前,请学习代码格式化。这将帮助您轻松跟踪错误。否则你会让自己和他人的生活陷入地狱。@MSCFC有帮助吗?:)请稍等,我将尝试不工作,它说:“7/4不是一个函数”;很抱歉,我发现了这个问题,这里有一个“(“在7/4之前它不起作用,它说“7/4不是函数”或“274不是函数”和“bla-bla-bla不是函数”…在这里你有
theDateC.getFullYear+parseInt…
你应该有
theDateC.getFullYear()+parseInt…
,即
getFullYear
后缺少括号。不需要对parseInt的所有调用,Date-get方法都返回数字和数学运算,而不是
+
都将操作数值转换为数字。表达式
Math.trunc(Alpha/90)-Math.trunc(Alpha/90)
必须返回零,而不管Alpha的值是多少。当ECMAScript数学函数使用弧度时,您似乎在处理度。您应该说明您正在尝试解决的问题:Asr祈祷可以在很多时间内发生(也因教派而异),因此提供示例输入和预期输出非常有帮助。
    navigator.geolocation.getCurrentPosition(function(position){
    var long = position.coords.longitude; 
    var lat = position.coords.latitude; 
    var theDateC = new Date(); 
    var D = (367*theDateC.getFullYear())-(parseInt((7/4)*(theDateC.getFullYear+parseInt((theDateC.getMonth()+9)/12))))+parseInt(275*(theDateC.getMonth()/9))+theDateC.getDate()-730531.5; 
    var L = 280.461+0.9856474*D; 
    var M = 357.528+0.9856003*D; 
    var Lambda = L +1.915*Math.sin(M)+0.02*Math.sin(2*M); 
    var Obliquity = 23.439-0.0000004*D; 
    var Alpha = Math.atan (Math.cos(Obliquity)*Math.tan(Lambda)); 
    Alpha = Alpha - (360 * parseInt(Alpha/360)); 
    Alpha = Alpha + 90 * ( Math.trunc ( Alpha / 90 ) - Math.trunc(Alpha / 90)); 
    var ST = 100.46 + 0.985647352 *D; 
    var Dec = Math.asin(Math.sin (Obliquity )*Math.sin(Lambda)); 
    var Noon = Alpha - ST; 
    var UTNoon = Noon - long; 
    var Zone = theDateC.getTimezoneOffset();
    var LocalNoon = UTNoon / 15 + Zone; var AsrAlt = Math.atan (1+ Math.tan( lat - Dec)); 
    var AsrArc = Math.acos ((Math.sin(90- AsrAlt )-Math.sin(Dec)*Math.sin(lat))/(Math.cos(Dec)*Math.cos(lat))); AsrArc = AsrArc / 15; 
    var AsrTime = LocalNoon + AsrArc; alert("وقت العصر : " + AsrTime); 
});