/*
官网原文:
When a function is defined using a function declaration, JScript binds the function to the global scope regardless of any scope changes introduced by with clauses.
*/
var v = 'value 1';
var o = {v: 'value 2'};
function f1()
{
alert('v == ' + v);
};
with (o)
{
function f2()
{
alert('v == ' + v);
};
}
// call with the initial values
f1();
f2();
// now modify the values
v = 'modified value 1';
o.v = 'modified value 2';
f1();
f2();
/*
Output:
IE: v == value 1
v == value 1
v == modified value 1
v == modified value 1
FF: v == value 1
v == value 2
v == modified value 1
v == modified value 2
Opera: same as IE
Safari: same as FF
*/
/*
官网原文:
Contrast the above example with the case where the function is defined as a function expression:
*/
var v = 'value 1';
var o = {v: 'value 2'};
var f1 = function ()
{
alert('v == ' + v);
};
with (o)
{
var f2 = function ()
{
alert('v == ' + v);
};
} // call with the initial values
f1();
f2();
// now modify the values
v = 'modified value 1';
o.v = 'modified value 2';
f1();
f2();
/*
Output: IE, FF, Opera, Safari:
v == value 1
v == value 2
v == modified value 1
v == modified value 2
*/
// case 1
var o = false;
with ({o : true})
{
function f()
{
return o;
}
}
document.write("FunDecl in with-smt is run time instantiated? " +f() +" (should be: true)");
document.write("<br>");
// case 2
var usebeforedeclare = (typeof fn === 'function');
if (true)
{
function fn() { return true; }
}
else
{
function fn() { return false; }
}
document.write("FunDecl in if-smt is parse time instantiated? " +usebeforedeclare +" (should be: false)\nThe correct path is taken: " +fn() +" (should be: true)");
document.write("<br>");
// case 3
BRANCH :
{
break BRANCH;
function fnc(){}
}
document.write("FunDecl in labelled statement is parse time instantiated? " +(typeof fnc === 'function') +" (should be: false)");
document.write("<br>");
// case 4
while (false)
function func(){}
document.write("FunDecl in while-smt is parse time instantiated? " +(typeof func === 'function')+ " (should be: false)");
document.write("<br>");
// case 5
for ( ; false; )
function funct(){}
document.write("FunDecl in for-smt is parse time instantiated? " +(typeof funct === 'function') +" (should be: false)");
document.write("<br>");
// case 6
for(var t in {}) function functi(){}
document.write("FunDecl in for..in-smt is parse time instantiated? " +(typeof functi === 'function') +" (should be: false)");
document.write("<br>");
// case 7
try { } catch(e) { function functio(){} }
document.write("FunDecl in try..catch-smt is parse time instantiated? " +(typeof functio === 'function') +" (should be: false)");
document.write("<br>");
// case 8
if (true)
{
function bar() { document.write("bar1"); }
}
else
{
function bar() { document.write("bar2"); }
}
bar();
function foo()
{
if (true)
{
function baz() { document.write("baz1"); }
}
else
{
function baz() { document.write("baz2"); }
}
baz();
}
foo();
分享到:
相关推荐
override protected function createChildren():void { super.createChildren(); var button:Button = new Button(); button.label = label; addChild(button); } } ``` 在这个例子中,我们创建了一个名为...
Use _GABIXX_NOEXCEPT to use the equivalent of the C++11 noexcept qualifier at the end of function declarations.
The database represents internal program structures, locations of function declarations, contents of class declarations, and relationships between program components. Source-Navigator graphical ...
/*** *string.h - declarations for string manipulation functions ...* This file contains the function declarations for the string * manipulation functions. * [ANSI/System V] * * [Public] * ****/
"Placing const in Declarations by Dan Saks"这篇文章很可能是深入探讨了如何在声明中有效地使用`const`。 1. `const`的基本概念: - `const`关键字用来定义一个只读变量,一旦赋值后就不能再次更改。 - 它可以...
- **Function Declarations and Definitions:** Separate function declarations and definitions clearly. - **Lambda Expressions:** Format lambda expressions consistently. - **Floating-point Literals:** ...
编译通过的Inno setup Inno Setup consists of five projects: Compil32.dpr - This is the GUI front-end for the compiler....various structures and function declarations used to interface to the DLL.
其中,`package_name` 是包名,`public_variable_declarations` 是公共变量声明,`public_type_declarations` 是公共类型声明,`public_exception_declarations` 是公共异常声明,`function_declarations` 是函数...
This file contains IDA built-in function declarations and internal bit definitions. Each byte of the program has 32-bit flags (low 8 bits keep the byte value). These 32 bits are used in get_full_flags...
: npm install css-declarations用import { parse , stringify } from 'css-declarations'var values = parse ( ` color:/*red*/purple; -webkit-border-radius: 3px !important;;` )// => {color: 'purple', ...
#include #include #include #include #include #include using namespace std; // Function declarations void write_account(); void display_account(in ........
IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version 和Export declarations are not supported by current JavaScript version报错都是一个解决办法 js文件报错 第一步,...
| function_declarations | procedure_specifications END [package_name] ``` 其中:package_name是包名。public_variable_declarations是公共变量声明。public_type_declarations是公共类型声明public_exception...
function f() { var a = 10; return function g() { var b = a + 1; return b; } } var g = f(); g(); // returns 11; ``` 然而,`var`声明有一些特殊的规则,可能会导致混淆和错误。例如,`var`声明的提升...
{ Private declarations } protected { Protected declarations } public { Public declarations } published function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): ...
C++ requires a type specifier for all declarations 声明、初始化与赋值的区别: 声明:int a; 初始化:int a = 2;(在声明的时候顺带赋值叫做初始化) 赋值:a = 2; 只有定义(int a;)才分配存储空间,初始化...
代码如下: // 方式1 function func1(x,y){ // your code } // 方式2 var func2 = function(x,y){ // your code } 方式1 是典型的函数声明(Function declarations)。 方式2 是函数表达式(Function expressions),将...
- **`function_declarations`** 和 **`procedure_specifications`**:声明包中的函数和过程。 ##### 包主体 (Package Body) 包主体包含了包中所有函数和过程的具体实现细节。 ##### 创建包主体的语法: ```sql ...
- **Program**: A program is defined as a repeating sequence of variable declarations, function declarations, and function definitions. - `<program>::={||<func-def>}` - **Variable Declaration**: This...