I stumbled upon a function called v8Locale
in Chrome's Developer Console. I was curious so I entered the function to get the source code, and it revealed the following code:
function (a){
native function NativeJSLocale();
var b=NativeJSLocale(a);
this.locale=b.locale;
this.language=b.language;
this.script=b.script;
this.region=b.region;
}
I started searching on the Internet and found this file which seems to be the source (it looks like it has been minified though).
I have no idea what the native
keyword means here. When I try to make something like this myself:
function bar() {}
function foo() {
native function bar();
}
I get the following error message (as I expected, actually):
SyntaxError: Unexpected token native
How is it possible that the v8Locale
function contains the native
token, and what does it mean/do?
I stumbled upon a function called v8Locale
in Chrome's Developer Console. I was curious so I entered the function to get the source code, and it revealed the following code:
function (a){
native function NativeJSLocale();
var b=NativeJSLocale(a);
this.locale=b.locale;
this.language=b.language;
this.script=b.script;
this.region=b.region;
}
I started searching on the Internet and found this file which seems to be the source (it looks like it has been minified though).
I have no idea what the native
keyword means here. When I try to make something like this myself:
function bar() {}
function foo() {
native function bar();
}
I get the following error message (as I expected, actually):
SyntaxError: Unexpected token native
How is it possible that the v8Locale
function contains the native
token, and what does it mean/do?
4 Answers
Reset to default 10That is used to tell v8
that the function is implemented in C++ code
The native
keyword is not defined in the ECMAScript 5 specification.
Sounds like it's part of a chrome extension
According to the latest MDN Web Docs, the native
word is no longer reserved in javascript. Is also usable in Node JS:
alec@MacBook-Air ~/process/tmp/shed/cli (main) $ node -v
v16.9.1
alec@MacBook-Air ~/process/tmp/shed/cli (main) $ node
...
> let native = 'XLM'
undefined
> console.log(native)
XLM
undefined
>
ActionScript, which is also based on ECMAScript, defines the native keyword here:
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/statements.html#native
They offer an example with code:
native function functionName();
class className {
native function methodName();
}
And there is the description:
Specifies that a function or method is implemented by Flash Player in native code. Flash Player uses the native keyword internally to declare functions and methods in the ActionScript application programming interface (API). This keyword cannot be used in your own code.
As implied by Matt, functions marked as native are implemented in the interpreter so you cannot yourself define a native function (unless you tweak the source code of your JavaScript interpreter...)
src/extensions/experimental/i18n.js
. Sounds like a chrome extension file. You can write chrome extensions in a superset of JavaScript. – Raynos Commented Jul 18, 2011 at 12:42window.history.back
in Chromes console, and you seefunction () { [native code] }
– Saeed Neamati Commented Jul 18, 2011 at 12:44