最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

function - What does the 'native' keyword mean in JavaScript? - Stack Overflow

programmeradmin3浏览0评论

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?

Share Improve this question asked Jul 18, 2011 at 12:40 pimvdbpimvdb 155k80 gold badges311 silver badges356 bronze badges 2
  • 1 Source path 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:42
  • Maybe it's the code of the browser. For example if you see window.history.back in Chromes console, and you see function () { [native code] } – Saeed Neamati Commented Jul 18, 2011 at 12:44
Add a comment  | 

4 Answers 4

Reset to default 10

That 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...)

发布评论

评论列表(0)

  1. 暂无评论