How can I improve this code?

This is a javascript script that spawns certain objects based on what number the timer starts and spawns the objects every x seconds in 2 different locations. For some reason this code keeps crashing my macbook so it’s really annoying and I don’t know how to improve it better because I am fairly new to javascript.
Here is the script:

  #pragma strict
    
    var spawning : boolean = false;
    var spawn1 : Transform;
    var spawn2 : Transform;
    var timer : float;
    var green : Rigidbody[];
    var build : Rigidbody[];
    var buildr : Rigidbody[];////for objects on the right
    var index : int;
    var indexr : int;
    var whatSpawn: float;///what objects to start spawning
    var objgreen : Rigidbody;
     var objbuild : Rigidbody;
     var objbuildr : Rigidbody;
     
    public static var picker : int;///used in objects moving script
    
    function Start(){
    
    whatSpawn = Mathf.Abs(Random.Range(0,60));
    }
    function FixedUpdate ()
    {
    whatSpawn += Time.deltaTime;
     if(!spawning){
      timer += Time.deltaTime;
     }
     if(timer >= 0.5f){
      Spawn();
     }
    }
     
    function Spawn()
{
     spawning = true;
     timer = 0;
     var randomPick : int = Mathf.Abs(Random.Range(0,3));///decides where objects will spawn
     var location : Transform ;

    if(randomPick == 1 ){
      location = spawn1;
      picker = 1;
    
     }
     else if(randomPick == 2 ){
      location = spawn2;
      picker = 2;
     }
     
    
    if(spawning == true){
         
         if(whatSpawn > 0 && whatSpawn < 20 ){
         index = Random.Range (0, green.Length );
         objgreen = green[index];
         objgreen =  Instantiate(objgreen,location.position,location.rotation);
        objgreen.AddForce(Vector3(0,0,100));
         }
     
      if(whatSpawn > 20 ){
              index = Random.Range (0, build.Length);
              indexr = Random.Range (0, buildr.Length);
           objbuild  = build[index];
          objbuildr  = buildr[indexr];
         objbuild =  Instantiate(objbuild,spawn1.position,spawn1.rotation);
        objbuildr =  Instantiate(objbuilds,spawn2.position,spawn2.rotation);
          }
          if(whatSpawn >= 40){//////dont let whatSpawn go over 40
          gren = 0;
          }
      }
     //halt script for 1 second before returning to the start of the process
     //set spawning back to false so timer may start again
     spawning = false;
    }

Why are you using FixedUpdate() instead of regular Update()?

FixedUpdate() is called every fixed framerate frame. It’s generally used to interact with RigidBodys and physics.

link text

Update() is called every frame.

link text

Here is a video explaining the differences: link text

I’ll first of all try to see how the game behaves this way.