no think of them as variables with scope specific to each script. in that example the J value of the calling script will be set to 0, and the J value of script 1 will be unaffected.
however, you are correct that if you modify the value of J in script 1, then J will still retain a value of 0 in the calling script.
essentially J and K add 20 additional variables, two per script(including METRO and INIT scripts). maybe an easier way to think of them is like so:
J-METRO, K-METRO //only accessible in the METRO script
J-INIT, K-INIT //only accessible in the INIT script
J1, K1 //only accessible in script 1
J2, K2 //only accessible in script 2
...
J8, K8 //only accessible in script 8