# Calling JavaScript from Rust To call a function defined in JavaScript ```js function on_update() { } ``` We need to acquire the `JsRuntime` resource within a bevy system. Then we will be able to call `call_fn` on it, providing the name of the function to call, the `JsScriptData` that has been automatically attached to the entity after an entity with a script attached has been spawned and its script evaluated, the entity and optionally some arguments. ```rust,no_run # extern crate bevy; # extern crate bevy_scriptum; use bevy::prelude::*; use bevy_scriptum::prelude::*; use bevy_scriptum::runtimes::javascript::prelude::*; fn call_js_on_update_from_rust( mut scripted_entities: Query<(Entity, &mut JsScriptData)>, scripting_runtime: ResMut, ) { for (entity, mut script_data) in &mut scripted_entities { // calling function named `on_update` defined in JavaScript script scripting_runtime .call_fn("on_update", &mut script_data, entity, ()) .unwrap(); } } ``` We can also pass some arguments by providing a tuple or `Vec` as the last `call_fn` argument. ```rust,no_run # extern crate bevy; # extern crate bevy_scriptum; use bevy::prelude::*; use bevy_scriptum::prelude::*; use bevy_scriptum::runtimes::javascript::prelude::*; fn call_js_on_update_from_rust( mut scripted_entities: Query<(Entity, &mut JsScriptData)>, scripting_runtime: ResMut, ) { for (entity, mut script_data) in &mut scripted_entities { scripting_runtime .call_fn("on_update", &mut script_data, entity, (123, String::from("hello"))) .unwrap(); } } ``` They will be passed to the `on_update` JavaScript function ```js function on_update(a, b) { print(a); // 123 print(b); // hello } ```