views:

66

answers:

4

How to declare a variable, I think global, the way I declare in an html file and then use it in a js file (included by <script> tags)?

+3  A: 

Don't use the var keyword

(That said, globals are usually the wrong solution to any given problem in JS)

David Dorward
@David: Or any other language, for that matter
Merlyn Morgan-Graham
However: **do** use the `var` keyword. If you use a variable without declaring it `var` anywhere, then yes, you get an accidental global, but it's not valid in ECMAScript Fifth Edition's Strict Mode, and if you are unlucky enough to use a name that matches any named element (ie. any with `id`, and in some cases `name`), IE will give you an error when you try to assign to it. You can declare a variable `var` in global context (instead of inside a function) to make it a global, and if you are using a global, you definitely *should* do that.
bobince
@bobince: You've stolen my words! :), under [strict mode](http://www.ecma262-5.com/ELS5_HTML.htm#Annex_C) an assignment to an undeclared identifier will throw a `ReferenceError` exception...
CMS
+1  A: 

So as I understand, you want to use a variable from an HTML file in a JS file? To pass a variable from an HTML file to a javascript file, pass it with a function:

HTML.html

    <a href="#" onClick="test('John Doe')">Send Name</a>

Javascript.js

function test(full_name) {
 alert(full_name);
}
Jon McIntosh
uuuu, i like your solution... :)
Richard
Thanks! I hope this answered your question
Jon McIntosh
:((((((((((((((((((
Matt Ball
What'd I do wrong?
Jon McIntosh
Variables cannot have a dash in the variable name, so full-name is not valid. You can try either full_name, fullName, or something else. The problem is that the JavaScript parser will try to subtract the 'full' variable from the 'name' variable.
Buddy
Doh! Good catch, I often find myself doing that.
Jon McIntosh
+2  A: 

You can assign to the window object, i.e. window.myGlobal = 3;. window is the default context for variable binding. That's why you can reference document instead of needing to do a window.document.

But yeah as David says, you should avoid using globals. And if you are going to use globals, you should place them and other top-level declarations in a "namespace" object to avoid potential naming collisions with other libraries, like this:

myNamespace = { myGlobal: 3 };

// Then to access...
myNamespace.myGlobal = 6;
Jacob
A: 

Please, avoid using global variables.

To answer your question, there are two ways of declaring a global variable in JavaScript. You can either omit the 'var' keyword, or declare the variable outside any function.

In this code sample, both thisIsGlobal and thisIsAlsoGlobal are global variables and set to null.

var thisIsGlobal= null;
function foo() {
    thisIsAlsoGlobal = null;
    // code goes here
}
Buddy