I think I can generate bitcoin addresses offline by JS. Can I use them directly or have to report them to somewhere so that the network knows my addresses?
If you want to use an address to receive funds, then there is no requirement to "report" the offline generated address anywhere. You can create the address (public and private key) offline, read the address out to somebody over the phone (or send email, or post it on a web page), and they can then send bitcoin to that address.
Later, when you want to spend the funds sent to you, you would need to load the keys into a client.