้็ถ็พๅจๆๅก็ฉไปถๅฐๅ,ไฝๅถ็พไนๆๆไธไบ็นๆฎๆ ๆณๆ้่คๆง็ๅผๅซไธไบ function,ๅฆๆๅจไธๅๆธ้็บ 10 ็่ฟดๅ่ฃก้ขๅผๅซไธๅ function,้ฃ่ฉฒ function ๅฐฑๆ่ขซ call ๅๆฌก,ๅ่จญ่ฉฒ function ็ๆไบ็ตๆ,ไพๅฆ่ชชๆๅ่ณๆๆฏๅไธไปถไบ็่ฉฑ,ๅ ถๅฏฆๆฒๅฟ ่ฆไนๅผๅซๅๆฌก,PHP ็ static ๅฏไปฅๅพๆๆ็็่งฃๆฑบ้ไปถไบๆ
PHP
<?php
function getData($number)
{
static $dataFromDatabase;
if (!isset($dataFromDatabase)) {
echo 'init', PHP_EOL;
$dataFromDatabase = 'This is data';
}
return sprintf(
'%s %s',
$dataFromDatabase,
$number
);
}
for ($i = 0; $i < 10; $i++) {
echo getData($i), PHP_EOL;
}
ๅท่ก็ตๆ
init This is data 0 This is data 1 This is data 2 This is data 3 This is data 4 This is data 5 This is data 6 This is data 7 This is data 8 This is data 9
ๅๅฆๆ static $dataFromDatabase; ๆฟๆๅฐฑๆ็ๅฐๅๆฌก init,ๅฐๅบๅฎ่ณๆไพ่ฌ็่ฉฑๅฐฑๆฏๅพๆฒๅฟ
่ฆ็่ณๆบๆตช่ฒป,python ไปฅๅ node.js ๆฒๆ้ๆจฃ็ๅฎฃๅๆนๅผ,ไฝๆ่ฝๅฝ็ไฝๆณ
python
# -*- coding: utf-8 -*-
def get_data(number):
if not hasattr(get_data, 'data_from_database'):
print('init')
get_data.data_from_database = 'This is data'
return '%s %s' % (get_data.data_from_database, number)
for i in range(10):
print(get_data(i))
node.js
function getData(number) {
if (getData.dataFromDatabase === undefined) {
console.log('init');
getData.dataFromDatabase = 'This is data';
}
return `${getData.dataFromDatabase} ${number}`;
}
for (let i = 0; i < 10; i++) {
console.log(getData(i));
}