Javascriptはメソッドの外の変数も読み込む

Javascriptはメソッドに引数を設定しないで、メソッドを呼び出してもメソッドの外の変数を読み込んで計算する。

メソッド(get_achievement)に引数を設定しないで、そのメソッドを呼び出しても、メソッドの外にある変数pointsを読み込み計算している。これを実行すると"A"を返す。

 

let points = [80,80,80,80];

function get_achievement(){
	let sum = 0;
	let number = points.length;
	let answer = "A";
	let full_score = 100
	for(let i=0;i<number;i++){
	    sum += points[i];
	}
	if (sum >= number*full_score*0.8){
		answer = "A";
	}else if(sum >= number*full_score*0.6){
		answer = "B";
	}else if(sum >= number*full_scores*0.4){
		answer = "C";
	}else{
		answer = "D";
	}
	return answer;
}

console.log(get_achievement());

 

rubyは下記のように、メソッド(sort_algo)で変数sample_listはメソッド内では読みこめない。下に実行結果は赤文字でエラーが出ている

 

sample_list = ["a","b","c"]

def sort_algo()
        count = 0
    for str_number in sample_list
        count += 1
    end
        sample_list[0],sample_list[count - 1] = sample_list[count - 1],sample_list[0]
        
        return sample_list
end

puts(sort_algo())

$ ruby algorithm_exercise3.rb
algorithm_exercise3.rb:5:in `sort_algo': undefined local variable or method `sample_list' for main:Object (NameError)
        from algorithm_exercise3.rb:14:in `<main>'