在WSH中运行并创建对象的Javascript程序中,假设是Scripting.FileSystemObject或任意COM对象,我在完成它时是否需要将变量设置为null?例如,我建议这样做:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var fileStream = fso.openTextFile(filename);
fso = null; // recommended? necessary?
... use fileStream here ...
fileStream.Close();
fileStream = null; // recommended? necessary?
Run Code Online (Sandbox Code Playgroud)
效果不同于让变量超出范围吗?
我想知道是否有一个"本地运行时环境"用于托管Javascript代码,这不是基于浏览器的,用于运行小型本地应用程序?类似于WSH(Windows Scripting Host)的JavaScript(不是MS-JScript).
我想在本地运行一些javascript脚本,就像我可能用于VBScript(VBS)一样,可能会出现以下情况:
或者,如何考虑仅在"本地"模式下运行浏览器?即:启动,运行代码,退出,也许使用命令行开关/选项,没有太多的开销?如果是这样,哪个浏览器?火狐?有可能以某种方式"提取"JS运行时引擎/ DLL并调用它吗?
那么,简而言之,像WSH这样的东西只适用于javascript?
谢谢.
如何使用WScript编写文本文件我真的很新,这就是为什么我不能提供一些细节.我想写可以保存在c日志文件://用户/用户/应用程序数据/本地
我的示例代码,使用FileSystemObject
function WriteFile()
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var fh = fso.CreateTextFile("d:\\Test.txt", true);
fh.WriteLine("Some text goes here...");
fh.Close();
}
<body onload = "WriteFile();">
</body>
Run Code Online (Sandbox Code Playgroud)
它确实在d中返回:但在本地c:它不会.
我有一个javascript我想编译成一个exe.
我正在使用jsc.exe这样做.但是,我在尝试编译时收到以下错误.
error JS1135: Variable 'WScript' has not been declared
Run Code Online (Sandbox Code Playgroud)
这是代码段:
var omgShell = WScript.CreateObject( "WScript.Shell" );
Run Code Online (Sandbox Code Playgroud)
这里有什么问题?
谢谢
Math对象没有prototype属性,但具有构造函数属性.有没有重新定义构造函数有用的情况?
长问题
首先,我知道ECMA Script是标准的,而JavaScript和JScript是实现。我了解到这三个指标都有自己的规格,并且有很多引擎,解释器和实现,但是我的具体问题是:
假设为这三个实施了一个完美的解释器和引擎,那么您在一个中可以做什么而您却不能在另一个中做,或者哪个会与其他两个有不同的作用?
我知道这是一个广泛的问题,但是由于两种语言(JScript和JavaScript)均源于规范(ECMAScript),因此实际差异应该可以忽略不计。
同样,我不是在谈论跨浏览器的兼容性(IE8和IE9使用了不同的引擎,这些引擎对JScript的解释不同,并且标准随时间而改变),而是纯ECMA5,JavaScript(如果有正式标准,我想最接近的是W3C或MDN以及JScript(显然在MSDN上维护)(参见图)。
笔记:
这不是该问题的重复版本,该问题已经过时五年了,它处理术语的定义,而不是语言的应用,或者该问题再次说明JavaScript和JScript是ECMAScript的方言,但不是进行任何功能上的区别。
这个问题是最接近的,但是我特别希望开发人员期望X和获得Y时应注意的技术陷阱。一个很好的例子就是这个问题,下面的代码:
// just normal, casual null hanging out in the sun
var nullA = null;
// query for non existing element, should get null, same behaviour also for getElementById
var nullB = document.querySelector('asdfasfdf');
// they are equal
console.log(nullA === nullB);
// false
nullA instanceof Object;
// will throw 'Object expected' error in ie8. Black magic
nullB instanceof …Run Code Online (Sandbox Code Playgroud) 我正在调查我的范围之外的一些代码,这些代码是用我以前从未见过的风格编写的.我试图了解以下属性包的内部工作原理:
二传手:
props.Property(name) = val;
Run Code Online (Sandbox Code Playgroud)
消气:
val = props.Property(name);
Run Code Online (Sandbox Code Playgroud)
你需要实例化setter以便如上所述运行?
编辑:简化程度较低,此代码在框架内的BrowserWindow上成功运行(类似于手机环境).
var UI =
{
ready: function(oProps)
{
try
{
if (oProps)
{
window.external.Property(UI.FrameWidth) = '1000';
window.external.Property(UI.FrameHeight) = '900';
}
window.external.Ready();
}
catch (e) { }
}
};
Run Code Online (Sandbox Code Playgroud)
提前致谢,
对于屏幕上的进程,窗口和控件的TestComplete对象 - 有没有一种方法可以枚举和打印出所有属性.我尝试了以下代码,我得到一个运行时异常: -
var deskObj = Sys.Desktop; //TC Desktop Object
var normObj = {a:1, b:2, c:3}; //Normal JScript Object
for (var prop in normObj)
{
Log.Message(normObj[prop]); //1, 2, 3
}
for (var prop in deskObj) //Runtime error - Object doesn't support this action
{
Log.Message(deskObj[prop]);
}
Run Code Online (Sandbox Code Playgroud)
这让我相信TC Objects不是JScript对象 - 所以有没有办法将它们转换为JScript对象.
我正在编写一个JavaScript来生成从2到100的素数.但它不起作用,无法弄明白.
你能帮我吗?
var array = new Array(100);
for (var i=2 ; i<=array.length-1; i++) {
if((i%2===0) || (i%3===0))
continue;
document.writeln(i+",");
}
Run Code Online (Sandbox Code Playgroud)
我修改了我的答案,但现在它没有打印2和3; 我怎样才能包括2&3 ...结果是:
5, 7, 11, 13, 17, 19, 23, 25, 29, 31, 35, 37, 41, 43, 47, 49, 53, 55, 59, 61, 65, 67, 71, 73, 77, 79, 83, 85, 89, 91, 95, 97
我已经在EA中广泛使用脚本编写了几年.今天早上,我进入EA开始构建一个新脚本,脚本不再起作用.我尝试编写'Hello World',甚至编写了一个语法错误的脚本.它不会检测错误,也不会运行脚本.
我见过的唯一线索就是当我尝试使用控制台手动驱动脚本时.当我打开一个控制台时,它会立即关闭(对于所有脚本语言).
有关如何获取脚本的任何想法?
jscript ×10
javascript ×8
ecmascript-5 ×2
wsh ×2
actionscript ×1
constructor ×1
properties ×1
scripting ×1
testcomplete ×1
vbscript ×1
windows ×1