blade @push scripts , jquery: $ is not a function

From the documentation for the script element:

Warning: [The defer] attribute must not be used if the src attribute is absent (i.e. for inline scripts), in this case it would have no effect.

So the script that loads jQuery is executed after the document is parsed and the script which tries to use it is executed immediately (because the defer attribute is ignored) which is before $ is added to the scope of the page.