Có thể sử dụng một biến trong một tệp được gọi first.js
bên trong một tệp khác được gọi là second.js
?
first.js
chứa một biến được gọi là colorcodes
.
Có thể sử dụng một biến trong một tệp được gọi first.js
bên trong một tệp khác được gọi là second.js
?
first.js
chứa một biến được gọi là colorcodes
.
Câu trả lời:
Như Fermin đã nói, một biến trong phạm vi toàn cầu sẽ có thể truy cập được đối với tất cả các tập lệnh được tải sau khi được khai báo. Bạn cũng có thể sử dụng một thuộc tính của window
hoặc (trong phạm vi toàn cầu) this
để có được hiệu ứng tương tự.
// first.js
var colorCodes = {
back : "#fff",
front : "#888",
side : "#369"
};
... trong một tập tin khác ...
// second.js
alert (colorCodes.back); // alerts `#fff`
... trong tệp html của bạn ...
<script type="text/javascript" src="first.js"></script>
<script type="text/javascript" src="second.js"></script>
window
là phạm vi toàn cầu - vì vậy window.colorCodes và đối tượng (toàn cầu) colorCodes là cùng một đối tượng.
<script>var variable1 = true;</script> <script src="first.js"></script>
First.js sẽ thấy biến đó chứ? Tôi đã thử nghiệm nó trong tiện ích mở rộng của Google Chrome và nó không hoạt động
/* global colorCodes */
vào dòng trên để ngăn thông báo lỗi "... không được xác định"
Bạn có thể xuất biến từ tệp đầu tiên bằng cách xuất .
//first.js
const colorCode = {
black: "#000",
white: "#fff"
};
export { colorCode };
Sau đó, nhập biến trong tệp thứ hai bằng cách nhập .
//second.js
import { colorCode } from './first.js'
Tôi đã làm như những gì câu trả lời ở trên đã nói nhưng mặc dù, nó không hoạt động với tôi
vì tôi là declaring
các biến inside
JQuery$( document ).ready()
vì vậy hãy chắc chắn rằng bạn khai báo các biến của bạn bên trong
<script>
thẻ chứ không phải nơi nào khác
Điều này sẽ hoạt động - xác định một biến toàn cục trong tệp đầu tiên và truy cập nó từ tệp thứ hai:
<script src="/firstfile.js"></script>
<script src="/secondfile.js"></script>
Firstfile.js:
var colors = {
text:'#000000',
background:'#aaaaaa',
something_else:'blue'
};
secondfile.js:
do_something_with(colors.background);
Lưu ý rằng thứ tự bạn tải các tệp tập lệnh có ý nghĩa đối với một số trình duyệt (chắc chắn IE6, có thể là các trình duyệt khác)
Sử dụng Node.js bạn có thể xuất biến thông qua mô-đun.
//first.js
const colorCode = {
black: "#000",
white: "#fff"
};
module.exports = { colorCode };
Sau đó, nhập mô-đun / biến trong tệp thứ hai bằng cách sử dụng yêu cầu.
//second.js
const { colorCode } = require('./first.js')
Bạn có thể sử dụng import
và export
aproach từ ES6 bằng Webpack / Babel, nhưng trong Node.js, bạn cần bật cờ và sử dụng tiện ích mở rộng .mjs.
Tôi đã đi qua amplify.js . Nó thực sự đơn giản để sử dụng. Để lưu trữ một giá trị, hãy gọi nó là "myValue", bạn làm:
amplify.store("myKey", "myValue")
Và để truy cập nó, bạn làm
amplify.store("myKey")
Tôi có thể làm điều này một chút khác nhau. Tôi không chắc tại sao tôi sử dụng cú pháp này, sao chép nó từ một số cuốn sách từ lâu. Nhưng mỗi tệp js của tôi định nghĩa một biến. Tệp đầu tiên, không có lý do nào cả, được gọi là R:
var R =
{
somevar: 0,
othervar: -1,
init: function() {
...
} // end init function
somefunction: function(somearg) {
...
} // end somefunction
...
}; // end variable R definition
$( window ).load(function() {
R.init();
})
Và sau đó nếu tôi có một đoạn mã lớn mà tôi muốn tách riêng, tôi đặt nó vào một tệp riêng và một tên biến khác, nhưng tôi vẫn có thể tham chiếu các biến và hàm R. Tôi đã gọi một TD mới mà không có lý do chính đáng nào cả:
var TD =
{
xvar: 0,
yvar: -1,
init: function() {
...
} // end init function
sepfunction: function() {
...
R.somefunction(xvar);
...
} // end somefunction
...
}; // end variable TD definition
$( window ).load(function() {
TD.init();
})
Bạn có thể thấy rằng trong vị trí của TD 'tôi gọi là R.somefeft. Tôi nhận ra rằng điều này không mang lại hiệu quả trong thời gian chạy vì cả hai tập lệnh cần tải, nhưng nó giúp tôi giữ mã của mình được tổ chức.
Một cách tốt nhất là sử dụng cửa sổ. TRẠNG THÁI BAN ĐẦU
<script src="/firstfile.js">
// first.js
window.__INITIAL_STATE__ = {
back : "#fff",
front : "#888",
side : "#369"
};
</script>
<script src="/secondfile.js">
//second.js
console.log(window.__INITIAL_STATE__)
alert (window.__INITIAL_STATE__);
</script>
<script src="http://datasource.example.net/first.js"></script><script src="second.js"></script>