javascript - 如何在 Javascript 中的函数之间共享变量?
问题描述
我的应用程序中有许多不同的 Javascript 函数,它们共享相同的变量和功能。如何简化这些?我是否必须创建一个我的函数继承自的类,还是有更简单或更好的选择?
function CreditCard() {
const tag = document.querySelector('meta[name=stripe-publishable-key]');
if (!tag) {
return;
}
const key = tag.getAttribute('content');
const stripe = Stripe(key);
const form = document.querySelector('#credit_card_form');
if (!form) {
return;
}
const name = document.querySelector('#name');
const email = document.querySelector('#email');
const spinner = document.querySelector('#spinner');
const fontName = document.querySelector('#server_side_constants').getAttribute('data-font-name');
const fontColor = document.querySelector('#server_side_constants').getAttribute('data-font-color');
const fontSource = document.querySelector('#server_side_constants').getAttribute('data-font-source');
const locale = document.querySelector('html').getAttribute('lang');
const errorMessage = document.querySelector('#stripe_error_message');
const clientSecret = document.querySelector('#client_secret');
const submitButton = document.querySelector('input[type=submit]');
const elements = stripe.elements({
fonts: [{
family: fontName,
src: fontSource
}],
locale: locale
});
const style = {
base: {
fontFamily: fontName,
color: fontColor
}
};
...
}
function DirectDebit() {
const tag = document.querySelector('meta[name=stripe-publishable-key]');
if (!tag) {
return;
}
const key = tag.getAttribute('content');
const stripe = Stripe(key);
const form = document.querySelector('#direct_debit_form');
if (!form) {
return;
}
const name = document.querySelector('#name');
const email = document.querySelector('#email');
const spinner = document.querySelector('#spinner');
const fontName = document.querySelector('#server_side_constants').getAttribute('data-font-name');
const fontColor = document.querySelector('#server_side_constants').getAttribute('data-font-color');
const fontSource = document.querySelector('#server_side_constants').getAttribute('data-font-source');
const country = document.querySelector('#server_side_constants').getAttribute('data-country');
const locale = document.querySelector('html').getAttribute('lang');
const errorMessage = document.querySelector('#stripe_error_message');
const clientSecret = document.querySelector('#client_secret');
const submitButton = document.querySelector('input[type=submit]');
const elements = stripe.elements({
fonts: [{
family: fontName,
src: fontSource
}],
locale: locale
});
const style = {
base: {
fontFamily: fontName,
color: fontColor
}
};
...
}
解决方案
推荐阅读
- python - 我需要获取某个时间窗口和某个步骤的金额
- android - 如何获取 Wi-Fi 或移动网络(4G 或 5G)信号强度?
- asynchronous - ClojureScript cljs.core.async/go 在 jsdom 中不起作用
- jquery - 插件更新后 jQuery 验证错误“jquery.format 不是函数”
- google-analytics - GTM 的 Google 同意模式
- cookies - 如何为 next.js 中的每个页面使用 getServerSideProps?
- algorithm - 二进制迷宫生成器
- sql - Sql按日期获取表中的最新行-双选vs order by
- r - 你如何呈现一个表格(和图表)来说明 R 中排列组大小的频率?
- sql - 如何通过多项选择在键表中选择值